2011-08-15 108 views
0

我有一些輸入文本字段正在生成的飛行(通過JavaScript)由用戶。我希望這些字段只接受整數,所以我使用字母數字插件。該插件按預期在頁面加載時已存在的元素上工作,但不適用於新的即時元素。我怎樣才能將新元素綁定到這個插件?謝謝!jquery綁定插件生活元素

這是一些示例代碼。

http://jsfiddle.net/ctown4life/tZPg4/780/

回答

3

簡單速戰速決 - 變化:

$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" class="intonly" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv); 

$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" class="intonly" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').numeric().appendTo(scntDiv); 

請注意,動態插入的領域都得到相同的ID。這不好,你應該爲每個輸入使用一個唯一的ID,或者根本沒有ID。

+0

+1實現呼叫到'數字()'可以在調用之前插入'appendTo(scntDiv)'。 – Gus

+0

當然!這很棒,謝謝你的幫助。 – ctown4life

1

live不會幫你在這裏。你必須當你添加一個新的輸入重新啓動插件:

$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" class="intonly" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>') 
    .appendTo(scntDiv) 
    .find('input').numeric(); 
2

在這裏你去

http://jsfiddle.net/tZPg4/781/

你只需要這個

$('#addScnt').live('click', function() { 
       $('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" class="intonly" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv).find("input").numeric(); 

的問題是不是因爲您使用live,而是因爲您沒有在新創建的輸入框上運行numberic插件。

0

的一個方法是調用字母數字插件爲您的動態投入:

$('#addScnt').live('click', function() { 
    $('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" class="intonly" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv); 
    i++; 
    $('#p_scents p:last input').numeric(); // Added this line... 
    return false; 
});