在 jquery 中使用 .change() 和 datepicker 提交表单

Posted

技术标签:

【中文标题】在 jquery 中使用 .change() 和 datepicker 提交表单【英文标题】:Using .change() and a datepicker in jquery to submit a form 【发布时间】:2011-09-05 18:55:32 【问题描述】:

目前我正在使用 JQuery UI 的 datepicker 范围,并且我添加了更多的 javascript,当不同的表单元素发生变化时应该在页面上提交表单。

如果我手动输入日期然后点击离开,这适用于我添加的下拉菜单以及日期选择器输入框。

但是,如果我单击日期选择器的输入字段,并且弹出日期选择器,则选择日期后表单将不会提交..

好像输入字段不知道发生了变化..?

http://api.jquery.com/change/

这是我正在使用的代码:

$(document).ready(function() 

                $('#from').change(function() 
                  document.myform.submit();
                );

            );
            $(document).ready(function() 

                $('#to').change(function() 
                  document.myform.submit();
                );

            );

使用 datepicker UI 事件,我添加了以下代码进行测试,但它不起作用.. 有什么想法吗?

$(document).ready(function() 

                $('#from').datepicker(
                   onClose: function()  alert('Yo yo!') 
                );

            );

【问题讨论】:

【参考方案1】:

jQuery UI DatePicker 有自定义事件,特别是 onSelect 事件,点击事件的选项卡,它在文档的底部:

http://jqueryui.com/demos/datepicker/

【讨论】:

【参考方案2】:

仔细检查您引用的代码上方没有 JavaScript 错误。

如果出现错误,则这些错误下方的 JavaScript 代码将无法正常执行。

这可能就是您添加到测试的代码也不起作用的原因。

【讨论】:

尝试使用 onSelect 事件而不是 @OriginalSyn 建议的 onClose 事件 我认为问题在于 .change 事件是 "deferred until the element loses focus." 这就是为什么它仅在您专门输入值时才有效。要让它在您选择日期时工作,请尝试使用 onSelect【参考方案3】:

正确答案在这里:jQuery datepicker, onSelect won't work

【讨论】:

【参考方案4】:

我希望它应该是 on focus 。单击日期选择器时,焦点将位于您必须显示日期的文本框中。 所以事件应该是.focus()

http://api.jquery.com/focus/

http://api.jquery.com/focusout/

【讨论】:

以上是关于在 jquery 中使用 .change() 和 datepicker 提交表单的主要内容,如果未能解决你的问题,请参考以下文章

jquery radio改变时没有触发on的change事件,是为啥

Jquery .change 检查脏表单

layui如何自动触发change事件,可以用jquery的change吗?

Jquery Select2,如何在 on(change) 函数中访问 ajax 数据?

JQuery中select change事件该怎么触发?

Jquery UI DateTimePicker 将 3 天添加到当前日期并使用 dp.change 方法禁用 datePickerStart 和 datePickerEnd 日期中的未来日期