函数调用动态添加的表单元素

时间:2013-07-24 09:47:47

标签: jquery

我有一个带有输入字段的表单,我正在添加另一个带有按钮的输入字段。我对每个输入字段的'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);

}

3 个答案:

答案 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);