我正在使用调用日期拾取器脚本的输入标记。现在在输入标签的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')"以调试此事件行为的工作方式。