0

我正在使用为日期调用 datepicker 脚本的输入标签。现在在输入标记的 onblur 事件上,我正在调用一个正常工作的 javascript 函数,但第二次当我单击 datepicker 输入以选择值时。

当我第一次单击输入标签并从日期选择器中选择一个值时,没有任何反应。但是当我第二次点击输入标签并从 datepicker 中选择一个值时,我的 javascript 函数正在工作。

这是代码:

// HTML code for input tag using datepicker script

<div class="input-append">
    <input type="text" size="12"  id="inputField" name="event_fromdate" readonly Placeholder="From Date" onblur="show_hide_fromdate();" />  
</div>

 // javascript function

 function show_hide_fromdate()
 {
     var fromdate=$('#inputField').val();
     var current_date = new Date();
     var userdate = new Date(fromdate);

     if(fromdate=="")
     {
         document.getElementById('msgFromDate').innerHTML = 'Enter From Date.';
     }
     else
     { 
         if(current_date.getDate()>userdate.getDate() || 
            current_date.getMonth()>userdate.getMonth() || 
            current_date.getFullYear()>userdate.getFullYear())
         {
             document.getElementById('msgFromDate').innerHTML = 'Invalid event date';
         }
         else
         {
             $('#msgFromDate').html('');
         }
     }
 }

没有得到这段代码的错误。

4

3 回答 3

0
            function show_hide_fromdate()
             {
                 var fromdate=$('#inputField').val();
                 var current_date = new Date();

                 //comment this since first time this value of field is always empty
                 //I move it to validation part below

                 //var userdate = new Date(fromdate);

                 if(fromdate=="")
                 {
                    $('#msgFromDate').html('Enter From Date.');
                 }
                 else
                 { 
                    var userdate = new Date(fromdate);
                     if(current_date.getDate()>userdate.getDate() || 
                        current_date.getMonth()>userdate.getMonth() || 
                        current_date.getFullYear()>userdate.getFullYear())
                     {
                         $('#msgFromDate').html('Invalid event date'.');
                     }
                     else
                     {
                        // maybe you should echo something to know whether it worked well or not to debug
                         $('#msgFromDate').html('Valid');
                     }
                 }
             }

如果上面的代码不起作用,你应该使用 firebug 来检测是否有 javascript 错误,也许你应该仔细检查 datetime picker 的输出。我建议您将“console.log('on blur')”添加到函数中以调试此事件行为的工作方式。

于 2013-04-10T14:19:17.737 回答
0

我认为你的问题是onBlur事件。我不知道你为什么onBlurreadonlytextfield 上调用 JS 方法。你能解释一下吗?

于 2013-04-10T14:09:12.150 回答
0

发生这种情况是因为您onblur的事件没有等待您的datepicker输入。我认为您需要的是可以告诉您您的文本textfield已更改的内容。像这样的东西:

$("input[type=text]").change(function() {
    alert("Text changed");
});

您可以在此处找到一个工作示例。

于 2013-04-10T14:14:28.433 回答