This question already has answers here:
jqueryUI datepicker fires input's blur before passing date, avoid/workaround?
(7个答案)
6年前关闭。
我正在尝试编写一些Javascript以从两个文本输入中获取值,这应该非常简单。但是有些不对劲。这是我的代码:
但是,当我
这两个文本输入的ID为
解:
最终我要做的是:
jQuery(function(){
jQuery('#fromPicker,#toPicker')。datepicker({
dateFormat:'yy-mm-dd'
});
(7个答案)
6年前关闭。
我正在尝试编写一些Javascript以从两个文本输入中获取值,这应该非常简单。但是有些不对劲。这是我的代码:
<script>
jQuery(function() {
jQuery('#fromPicker, #toPicker').datepicker({ dateFormat : 'yy-mm-dd' });
jQuery('#submit').attr('disabled', 'disabled');
jQuery('#toPicker').on('blur', function() {
var fromDate = jQuery('#fromPicker').val();
var toDate = jQuery('#toPicker').val();
console.log(toDate);
if (fromDate !== '' && toDate !== '') {
if (isValidDate(fromDate) && isValidDate(toDate)) {
jQuery('#submit').removeAttr('disabled');
} else {
alert('You must enter dates in the format "yyyy-mm-dd"');
}
}
});
});
function isValidDate(dt) {
if (dt.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)) {
return true;
}
}
</script>
但是,当我
console.log(toDate)
时,我得到一个空字符串。但是,如果我再次执行另一个blur
事件(使用仍在其中的数据对字段进行聚焦和取消聚焦),则将获得正确的值。有什么想法为什么它第一次不起作用?这两个文本输入的ID为
#fromPicker
和#toPicker
,它们是jQueryUI日期选择器。解:
最终我要做的是:
jQuery(function(){
jQuery('#fromPicker,#toPicker')。datepicker({
dateFormat:'yy-mm-dd'
});
jQuery('#submit').on('click', function() {
var fromDate = jQuery('#fromPicker').val();
var toDate = jQuery('#toPicker').val();
if (fromDate !== '' && toDate !== '') {
if (isValidDate(fromDate) && isValidDate(toDate)) {
// do nothing
} else {
alert('You must enter dates in the format "yyyy-mm-dd"');
return false;
}
} else {
return false;
}
});
});
function isValidDate(dt) {
if (dt.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)) {
return true;
}
} </script>
最佳答案
我看不到任何原因导致您的代码无法正常工作,但请尝试使用datepicker的blur
事件代替onselect
事件
jQuery('#toPicker').datepicker( {
onSelect: function(date) {
alert(date);
// Do other stuff
},
// ....
);
关于javascript - 如何在字段模糊时从文本输入中获取值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17817853/
10-09 23:00