我有一些輸入文本字段正在生成的飛行(通過JavaScript)由用戶。我希望這些字段只接受整數,所以我使用字母數字插件。該插件按預期在頁面加載時已存在的元素上工作,但不適用於新的即時元素。我怎樣才能將新元素綁定到這個插件?謝謝!jquery綁定插件生活元素
這是一些示例代碼。
http://jsfiddle.net/ctown4life/tZPg4/780/
我有一些輸入文本字段正在生成的飛行(通過JavaScript)由用戶。我希望這些字段只接受整數,所以我使用字母數字插件。該插件按預期在頁面加載時已存在的元素上工作,但不適用於新的即時元素。我怎樣才能將新元素綁定到這個插件?謝謝!jquery綁定插件生活元素
這是一些示例代碼。
http://jsfiddle.net/ctown4life/tZPg4/780/
簡單速戰速決 - 變化:
$('<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。
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();
在這裏你去
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
插件。
的一個方法是調用字母數字插件爲您的動態投入:
$('#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;
});
就叫上新追加的輸入字段的.numeric()方法。做.appendTo(scntDiv)後,您撥打:
scntDiv.children('p:last .intonly').numeric();
全碼:
+1實現呼叫到'數字()'可以在調用之前插入'appendTo(scntDiv)'。 – Gus
當然!這很棒,謝謝你的幫助。 – ctown4life