TimeEntry Js函数不适用于动态添加的文本框

时间:2014-06-26 06:13:21

标签: javascript jquery .net asp.net-mvc-4

<td style='vertical-align: middle;'><input name='DriveTimeDaySlots[" + index + "].StartTime' class='smallTxtEntry0 driveTimedaySlot  hasTimeEntry' id='DriveTimeDaySlots_" + index + "_StartTime' type='text' value='' onchange='driveTimeDaySlotValueOnchnge(this)' data-timeEntry='show24Hours: true, showSeconds: true, defaultTime: 00:00:00'/></td>" +
                "<td style='vertical-align: middle;'><input name='DriveTimeDaySlots[" + index + "].EndTime' class='smallTxtEntry0 driveTimedaySlot  hasTimeEntry' id='DriveTimeDaySlots_" + index + "_EndTime' type='text' value='' onchange='driveTimeDaySlotValueOnchnge(this)' data-timeEntry='show24Hours: true, showSeconds: true, defaultTime:00:00:00'/></td>" +
                "<td style='vertical-align: middle;'><input name='DriveTimeDaySlots[" + index + "].DefaultTimeTaken' class='smallTxtEntry0 driveTimedaySlot  hasTimeEntry' id='DriveTimeDaySlots_" + index + "_DefaultTimeTaken' type='text' value='' onchange='driveTimeDaySlotValueOnchnge(this)' data-timeEntry='show24Hours: true, showSeconds: true, defaultTime:00:00:00'/></td>" +

我在点击按钮时添加此文本框。 在Document.ready上,我写道:

 $(document).ready(function () {      
    $('.driveTimedaySlot').timeEntry({ show24Hours: true, showSeconds: true, defaultTime: "00:00:00" });
});

但它并没有针对动态添加的文本框进行解雇

4 个答案:

答案 0 :(得分:1)

timeEntry函数没有拾取您动态创建的新元素,因为它是在您调用该函数后创建的。所以你需要做的是每次添加行之后调用timeEntry函数(在函数结束时)。

function urfunction() {
   //Your codes
    $('.driveTimedaySlot').timeEntry({
    show24Hours: true,
    showSeconds: true,
    defaultTime: "00:00:00"
   });
}

答案 1 :(得分:1)

您无法在jQuery中捕获动态创建的元素的任何事件。一个技巧是你将事件代码放在一个单独的函数中(如@Sridhar R所述):

function urfunction(elementId) {

    // ... any code you need to perform
    // on that jquery selector...

}

并将此函数的名称放入某个on... html属性(onchange,onclick等):

<input id="eId" ... onclick="urfunction('eId')" ... />

答案 2 :(得分:1)

我已经demo JSFIDDLE演示了如何将TimeEntry插件附加到动态添加的文本框。希望能帮助到你 !这是代码: HTML:

<input type="button" id="add" value="Click to add textbox and attach TimeEntry plugin to it !">

JS:

$(document).ready(function(){

    $('#add').click(function(){
        //document.append('<input type="text">');
        $(document.createElement('input')).attr("id", 'defaultEntry').appendTo('body');
        $('#defaultEntry').timeEntry({show24Hours: true, showSeconds: true});
    });
});

答案 3 :(得分:1)

问题在于has类 我已将此类添加到动态添加的文本框中。 这导致了问题。 我已经删除了hastimentry类并且它有效