2011-11-08 23 views
5

您好我使用jQuery驗證器的一種形式。 這工作很好,直到今天。我添加了一個新的代碼這增加/刪除附加字段的形式(使用到「必需的」集類)的形式..Jquery驗證器插件不檢查新輸入

基本形式是像>

<form name="form" id="form"> 
    <input name="text1" class="required"> 
    <a id="addnew">Add new text</a> 
<div id="newitems"></div> 
    <submit> 
    </form> 

代碼我一些事使用是

<script type="text/javascript"> 
     $(document).ready(function({ $("#form").validate(); 
     $("#addnew").click(function({ 
     $("#newitems").append('<input class="required" name="newinput">'); 
}); }); 
</script> 

的想法是,當有人點擊添加新的文本形式內部增加了一個新的領域。我的問題是,然後驗證器不能在新字段上工作,因爲它已經加載的形式..我如何設置JavaScript來檢查和新的領域?

我沒有複製我的網站的確切代碼,因爲它很長..

This Is the validation plugin - its the most used validator on jquery

回答

5

創建新的表單元素後,您需要通知驗證插件通過添加規則來檢查它。如果元素存在於文檔加載中,將'required'類添加到元素只會警告插件。試試這個:

$(document).ready(function({ 
     $("#form").validate(); 
     $("#addnew").click(function({ 
      var input = $("<input />").attr("name", "newinput"); 
      $("#newitems").append(input); 
      input.rules('add', {'required': true}) 
     }); 
    }); 
+0

雖然這是正確的操作方法,但它不適用於動態添加的項目。你仍然需要去除所有東西並重新綁定。 –

1

如果添加動態內容的任何現有的不影響到新的控件。您必須在修改dom後再次分配該事件。所以再次調用驗證器進行修改。

1

您必須在加載動態內容後再次綁定事件。

如果您要將動態內容添加到任何現有的不影響新控件。您必須在修改dom後再次分配該事件。所以再次調用驗證器進行修改。

如果你想重新綁定只需再次調用

$("#addnew").click(function({ 
     $("#newitems").append('<input class="required" name="newinput">'); 
     }); 

你也可以把它放在一個函數

function rebindit() { 
$("#addnew").click(function({ 
    $("#newitems").append('<input class="required" name="newinput">'); 
    }); 
} 

每一次您的內容更改調用rebindit();

+0

如何綁定它? – Svetoslav

+0

編輯@Svetlio – John

+0

綁定綁定會觸發兩次,您需要先清除當前綁定的項目... –

0

JavaScript中有一個onchange事件,當字段內容發生變化時觸發該事件。你可以在新的領域使用它來利用該領域的驗證。