2013-02-14 197 views
0

我面临jQuery日期选择器的问题。jquery datepicker没有弹出第一次点击,但弹出第二次点击

我将jquery datepicker附加到一个javascript函数中动态生成的文本框。

问题是日期选择器不会在第一次点击时弹出,如果我在javascript函数中放置断点或警报,那么在第一次点击自动时弹出日期选择器。

这是JavaScript函数,我使用:

function CalendarPopUpOnClick(TextBoxId, HiddenFieldId) { 
    if (TextBoxId != undefined) { 
     $('#' + serverIdPrefix + TextBoxId).keypress(function (event) { 
      event.preventDefault(); 
     }); 
     var dateTimeDueDate = $('#' + serverIdPrefix + HiddenFieldId).val(); 
     var dateTimeArrDueDate = dateTimeDueDate.split(" "); 
     var dateOnlyDueDate = dateTimeArrDueDate[0]; 
     $('#' + serverIdPrefix + TextBoxId).val(dateOnlyDueDate); 

     setTimeSpanBeginInput = function() { 
      var dateTime = $('#' + serverIdPrefix + HiddenFieldId).val(); 
      var dateTimeArr = dateTime.split(" "); 
      var dateOnly = dateTimeArr[0]; 
      $('#' + serverIdPrefix + TextBoxId).val(dateOnly); 
     } 
     $('#' + serverIdPrefix + TextBoxId).datepicker({ 
      dateFormat: 'yy-mm-dd', 
      onSelect: function (dateText) { 
       $('#' + serverIdPrefix + HiddenFieldId).val(dateText + ' 12:00:00 PM'); 
      }, 
      onClose: setTimeSpanBeginInput 
     }); 
    } 
} 
+0

控制台中是否有错误? – 2013-02-14 16:12:32

+0

你确定你没有在那里复杂化一些东西吗? – adeneo 2013-02-14 16:13:25

+0

不,我没有得到任何错误 – Prashith 2013-02-14 16:13:50

回答

0

谢谢大家,

对不起,我迟到更新。

我已经得到这与下面的代码工作。

我正在使用C#和Asp.Net作为@adeneo指出的。

我创建从C#代码两个动态文本框后面添加JavaScript函数onclik文本框的事件下面给出:

DeliveryDateTextBox.Attributes.Add("onClick", "javascript:CalendarPopUpOnClick('" + DeliveryDateTextBox.ClientID + "','" + Hiddenfield_DeliveryDateTextBox.ClientID + "');"); 


DueDateTextBox.Attributes.Add("onClick", "javascript:CalendarPopUpOnClick('" + DueDateTextBox.ClientID + "','" + Hiddenfield_DueDateTextBox.ClientID + "');"); 

,并在JavaScript文件我加入以下代码:

$(document).ready(function() 
{ 
/* Get id prefixes for checkboxes, checkbox control elements */ 
var exampleId = $("input[use='proprietary']").attr("id"); 
var serverIdPrefixEndPos = exampleId.indexOf("exampleID"); 
serverIdPrefix = exampleId.substring(0,serverIdPrefixEndPos); 

/* Datepicker BEGIN */ 
setTimeSpanBeginInput = function(){ 
           var dateTime = $('#'+ serverIdPrefix +'timeSpanFromDeliveryDateHiddenField').val(); 
           var dateTimeArr = dateTime.split(" "); 
           var dateOnly = dateTimeArr[0]; 
           $('#'+ serverIdPrefix +'timeSpanFromDeliveryDate').val(dateOnly); 
          } //when calendar closed, copy hidden field value to main date field 
$('#'+ serverIdPrefix +'timeSpanFromDeliveryDate').datepicker({dateFormat: 'yy-mm-dd', onSelect: function(dateText){ $('#'+ serverIdPrefix +'timeSpanFromDeliveryDateHiddenField').val(dateText + ' 12:00:00 PM'); }, onClose: setTimeSpanBeginInput}); 

setTimeSpanEndInput = function(){ 
           var dateTime = $('#'+ serverIdPrefix +'timeSpanToDateHiddenField').val(); 
           var dateTimeArr = dateTime.split(" "); 
           var dateOnly = dateTimeArr[0]; 
           $('#'+ serverIdPrefix +'timeSpanToDeliveryDate').val(dateOnly); 
          } //when calendar closed, copy hidden field value to main date field 
$('#'+ serverIdPrefix +'timeSpanToDeliveryDate').datepicker({dateFormat: 'yy-mm-dd', onSelect: function(dateText){ $('#'+ serverIdPrefix +'timeSpanToDateHiddenField').val(dateText + ' 12:00:00 PM'); }, onClose: setTimeSpanEndInput}); 

/* Datepicker END */ 



});//end document ready 
function CalendarPopUpOnClick(TextBoxId, HiddenFieldId) 
{ 

    if (TextBoxId) { 
     var textBox  = $('#' + serverIdPrefix + TextBoxId), 
      hiddenField = $('#' + serverIdPrefix + HiddenFieldId); 

     textBox.focus(); 

     $(":input").bind('paste', function(e) { 
     setTimeout(function() { 
     var dateval =hiddenField.val(); 
       if(dateval.indexOf('0001-01-01')==-1) 
       textBox.val( hiddenField.val().split(" ")[0] ); 
       else 
       textBox.val(''); 
     }, 100); 
     });    

     textBox.keypress(function(event) {event.preventDefault();}); 
     hiddenField.keypress(function(event) {event.preventDefault();}); 
     var dateTime = hiddenField.val(); 
     var dateTimeArr = dateTime.split(" "); 
     var dateOnly = dateTimeArr[0]; 
     textBox.datepicker({ 
      dateFormat: 'yy-mm-dd', 
      onSelect: function (dateOnly) { 
       hiddenField.val(dateOnly + ' 12:00:00 PM'); 
      }, 
      onClose: function() { 
       var dateval =hiddenField.val(); 
       if(dateval.indexOf('0001-01-01')==-1) 
       textBox.val( hiddenField.val().split(" ")[0] ); 
      } 
     }); 
     textBox.datepicker().datepicker('show'); 
    } 
} 
相关问题