调用javascript函数的日期picker输入标签工作的第二个动作


calling of javascript function on datepicker input tag working on second action

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

当我第一次点击输入标签并从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('');
         }
     }
 }

没有得到这个代码中的错误

我认为你的问题是在onBlur事件。我不知道为什么你在readonly文本字段上使用onBlur调用JS方法。你能解释一下吗?

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

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

            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错误,也许你也应该仔细检查日期时间选择器的输出。我建议您在函数中添加"console.log('on blur')"以调试此事件行为的工作方式。