datepicker在live方法中不起作用

时间:2012-12-11 09:29:26

标签: jquery

我的datepicker工作在简单的代码中。在插入<tr>的新行后使用它不能点击。但是我可以在第一次点击进入<input/>时获得对象。 单击其他input时可以使用,然后再次单击以显示datepicker的弹出窗口。

我的jQuery:

$('#myTable tr:last').after("<tr><td align='center'style='background-color:"+rcolor+"'>"+rowCount+
            "</td><td><input style='width:300px !important;' name='onvan' /></td>"+
            "<td><input style='width:100px !important;' name='' id='startdate'/></td>"+
            "<td><input style='width:100px !important;' name='' id='enddate'/></td>"+
            "<td><input style='width:100px !important;' name='' id='' /></td>"+
            "<td>"+
            "<select name='visible'>"+
            "<option></option>"+
            "<option></option>"+
            "<option></option>"+
            "<option></option>"+
            "<option></option>"+
            "<option></option>"+
            "</select></td>"+
            "<td><select name='visible'><option value='1' >فعال</option><option value='0' >غیرفعال</option></select>"+
            "&nbsp;&nbsp;<span id='saveToDb'><a href='#'>ذخیره</a></span>&nbsp;<span id='cancelToSave'><a href='#'>لفو</a></span></td>"+
            "</tr>");

DATAPICKER:

$(function() {
    $('#startdate').live('click', function() {
        // alert( $(this));

             $(this).datepicker({
                changeMonth: true,
                changeYear: true,
                showButtonPanel: true,
                dateFormat: 'yy/mm/dd',
                minDate: '-3y',
                maxDate: '+3y',
                regional: 'fa',
                onSelect: function (dateText, inst) {
                         var date = new JalaliDate(inst['selectedYear'], inst['selectedMonth'], inst['selectedDay']).getGregorianDate();
                          var month= (date.getMonth()+1).toString(); 
                          if (month.length <2) month='0'+ month; 

                          var day= date.getDate().toString(); 
                          if (day.length <2) day ='0'+ day;
                          $('#taTarikh').val(date.getFullYear() + '-' + month + '-' + day);
                          // alert($('#taTarikh').val());
                }
             });    
          });                 
});

1 个答案:

答案 0 :(得分:1)

使用.live('click',function(){});,您将在第一次点击时实施datepicker,这就是为什么它会在第二次点击时开始工作。

您应该在创建对象后实现datepicker ..

$(function() {
    $('#myTable tr:last').after("<tr><td align='center'style='background-color:yellow'>3</td><td><input style='width:300px !important;' name='onvan' /></td>" + "<td><input style='width:100px !important;' name='' id='startdate'/></td>" + "<td><input style='width:100px !important;' name='' id='enddate'/></td>" + "<td><input style='width:100px !important;' name='' id='' /></td>" + "<td>" + "<select name='visible'>" + "<option></option>" + "<option></option>" + "<option></option>" + "<option></option>" + "<option></option>" + "<option></option>" + "</select></td>" + "<td><select name='visible'><option value='1' >فعال</option><option value='0' >غیرفعال</option></select>" + "&nbsp;&nbsp;<span id='saveToDb'><a href='#'>ذخیره</a></span>&nbsp;<span id='cancelToSave'><a href='#'>لفو</a></span></td>" + "</tr>");
    $("#startdate").datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'yy/mm/dd',
        minDate: '-3y',
        maxDate: '+3y',
        regional: 'fa',
        onSelect: function(dateText, inst) {
            var date = new JalaliDate(inst['selectedYear'], inst['selectedMonth'], inst['selectedDay']).getGregorianDate();
            var month = (date.getMonth() + 1).toString();
            if (month.length < 2) month = '0' + month;
            var day = date.getDate().toString();
            if (day.length < 2) day = '0' + day;
            $('#taTarikh').val(date.getFullYear() + '-' + month + '-' + day);
            // alert($('#taTarikh').val());
        }
    });
});

演示:http://jsfiddle.net/BerkerYuceer/pBQFF/14/