我有一个带有输入字段的表单,我正在添加另一个带有按钮的输入字段。我对每个输入字段的'keyup'事件都有一个函数调用,但是这个函数调用仅适用于第一个输入字段,动态添加的输入字段不触发该函数。如何让它与所有输入字段一起使用?
我做了jsfiddle看我的例子。
这是我的HTML代码:
<form method="POST" onsubmit="return false;">
<div id="serials">
<div id="serial_0">
Serial 0: <input type="text" name="serial_0" id="serial_0" />
</div>
</div>
<button id="addSerial">add another field</button>
</form>
这是我的JS代码:
$(document).ready(function(){
$('input[id^=serial]').on("keyup", validateSerial);
$("#addSerial").click(function () {
$("#serials").append('' +
'<div id="serial_' + $("#serials > div").size() + '">' +
'Serial '+ $("#serials > div").size() +': <input type="text"' +
'name="serial_' + $("#serials > div").size() + '"' +
'id="serial_' + $("#serials > div").size() + '"' +
'</div>' +
'');
});
});
function validateSerial(){
var inputFieldNumber = $(this).attr('id').match(/\d+$/);
alert(inputFieldNumber);
}
答案 0 :(得分:4)
你需要在这里使用事件委托模型
$("#serials").on("keyup", 'input[id^=serial]', validateSerial);
答案 1 :(得分:0)
试试这个:
$(document).ready(function(){
$('input[id^=serial]').on("keyup", validateSerial);
$("#addSerial").click(function () {
$("#serials").append('' +
'<div id="serial_' + $("#serials > div").size() + '">' +
'Serial '+ $("#serials > div").size() +': <input type="text"' +
'name="serial_' + $("#serials > div").size() + '"' +
'id="serial_' + $("#serials > div").size() + '"' +
'</div>' +
'');
$('input[id^=serial]').on("keyup", validateSerial);
});
});
function validateSerial(){
var inputFieldNumber = $(this).attr('id').match(/\d+$/);
alert(inputFieldNumber);
}
答案 2 :(得分:0)
检查这个小提琴http://jsfiddle.net/RdsFa/1/
$(document).on("keyup",'input[id^=serial]', validateSerial);