2011-05-07 119 views
1

其實我正在驗證具有文本,選擇,下拉等字段的表單。我有一些強制性的領域,我給他們一個需要的類(只有文本域)。現在,我想遍歷所有表單元素,並檢查該元素是否具有所需的類,然後在該字段後附加*。我已經使用each()方法,但是我沒有完全按照我想要的方式工作。使用Specefic類循環表單元素

我的代碼如下所示:

function validate_form() { 
    $("#mysubmit").each(function() { 
     if($("form :text.required:text").val() == "") 
     { 
      $("form :text.required:text").html("*"); 
      return false; 
     } 
     return true; 
    }); 
} 

其中mysubmit是我的提交按鈕的ID。

我想逐個遍歷DOM元素。任何人都可以幫助我如何驗證此表單。 感謝

回答

0

可以使用.after爲所需的元素後追加*,像這樣:

$('.required').after('<span>*</span>'); 

用於遍歷所有必填字段,你這樣做:

$(.required).each(function(){ 
    //do something with this 
    //inside this function 'this' is in turn each of the selected elements 
    alert($(this).val()); 
}); 

jQuery.each遍歷它所應用的選擇中的所有元素。在你的情況下,$("#mysubmit")只是一個元素(我假設提交按鈕)。沒有必要。
這裏是你的代碼的重寫版本:

function validate_form() { 
    var valid = true; 
    $('form .required').each(function(){ 
     if ($(this).val()==''){ 
     $(this).after('<span>*</span>'); 
     valid = false; 
     } 
    }); 
    return valid; 
} 

注:

  • 沒有必要$("#mysubmit").each爲你的函數內部的邏輯不依賴於提交按鈕
  • 返回一個像你試過的.each函數的值不能像你期望的那樣工作。如果您從.each函數返回false,則它將停止迭代。
  • $(「form:text.required:text」)將匹配全部具有類.required的文本字段,而不僅僅是一個,正如您所期待的那樣。
1

正如你所說,你想追加的'*'。您試圖在內插入

我們將創建class="validation"跨度不喜歡這樣寫道:

function validate_form() { 
    var valid = true; 
    $('form .required:text').each(function(){ 
     var $spanVal = $(this).next(); //Try to get the validation message (who has '*') 
     if ($(this).val()!="" && $spanVal.is("span.validation")){ //If text has value 
      $spanVal.remove(); //remove the asterisk 
     }else if($(this).val()==""){ //If text is empty   
      if(!$spanVal.is("span.validation")){ //Create a validation message if it doesn't exist 
       $('<span class="validation">*</span>').insertAfter(this); 
      } 
      valid = false; 
     } 
    }); 
    return valid; 
} 

希望這有助於。乾杯。

+0

我平添了幾分驗證本作空格,但它不驗證空格。我在這裏錯了: else if($(this).val()==「」|| $(this).val()。replace(/ \ s/g,'')。長度== 0) 並感謝您的答案 – singularity 2011-05-08 07:39:55

0

這是我如何解決我的問題,而

if語句刪除警報和.append的* :)覺得它應該工作

https://stackoverflow.com/a/40891000/5185974

+0

一個潛在的解決方案的鏈接永遠是受歡迎的,但請[添加鏈接上下文](http://meta.stackoverflow.com/a/8259/169503)所以你的同行的用戶會有一些想法是什麼,爲什麼它在那裏。如果目標網站無法訪問或永久離線,請始終引用重要鏈接中最相關的部分。考慮到_barely不僅僅是一個鏈接到外部網站_是一個可能的原因[爲什麼和如何刪除一些答案?](http://stackoverflow.com/help/deleted-answers)。 – 2016-11-30 16:05:44