【问题标题】:Triggering "change" event on jQuery datepicker filled with jQuery val() not working在填充有 jQuery val() 的 jQuery 日期选择器上触发“更改”事件不起作用
【发布时间】:2018-09-18 11:00:28
【问题描述】:

我试图在使用 jQuery val() 方法填充 jQuery datepicker 输入后触发“更改”事件(我不是“选择”值,而是使用 jquery val() 注入它)。问题是它不起作用 - 输入字段没有保存插入的值并且表单看不到它(并阻止提交)。我的代码是:

var date1 = 27/02/2018;
var newdate = date1.split("/").reverse().join("-"); 
var selection = $('#date_field').val(newdate);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
selection.dispatchEvent(evt);

我也在尝试“输入”事件,但它也不起作用。

如果您知道如何在日期选择器输入上触发更改事件,请给我一些建议。

干杯, 保罗

【问题讨论】:

  • selection 是一个 jQuery 对象,所以只需 selection.change() 就会引发该事件。如果这没有您正在寻找的效果,那么您尝试触发的事件处理程序可能未绑定到该元素
  • 好的,我现在明白了。我检查了字段事件处理程序,那里没有“更改”事件。但是有:'blur','click','copy','cut','error','focus','focusin','focusout','keydown','keypress','keyup','load' ,'消息','mousedown','mouseup','粘贴','文本输入'。我尝试了 'keyup' 和 'blur' 事件,因为我认为更改可能是在模糊时触发的,但它只是清除插入的值....如何在该字段中保存插入的值?也许还有其他一些可能性可以在这种类型的字段上实现“改变”?

标签: javascript jquery html input datepicker


【解决方案1】:

在 Jquery 中,您可以使用 trigger() 函数触发事件:

$('#date_field').trigger("change");

那么如果有一些与change事件相关的动作就会被触发。

【讨论】:

  • 不幸的是 - 它不起作用。正如我在对 Rory McCrossan 帖子的回答中所说,该领域没有“更改”事件。虽然还有其他事件,但我不知道在这种情况下如何使用它们。
  • 这是一个将 event 更改为 data_field 的示例: $('#data_field').change(function (e) { $(this).val(); // 获取输入的值//可以在这里放你想要的其他代码 });
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多