.change()处理程序make form需要两次单击才能提交

til*_*use 5 javascript ajax jquery

我有一个绑定它text area.change()处理程序.在更改时,它会强制执行ajax调用以保存一些数据.在页面的另一部分,还有一个带有提交按钮的表单.

期望的行为是,如果在文本区域的用户类型,然后将鼠标移动到提交按钮,点击,在AJAX调用时,然后提交表单.

似乎正在发生的事情是click按钮上的按钮会触发change()事件,但不会发生任何点击.

有什么建议的方法吗?

更新:

$('#content').click(function(event) {
  console.log("content clicked");
});

$('input#order_is_gift').change(function() {
  console.log("change", event);
  f.cart.set('is_gift', $('input#order_is_gift').prop('checked'));
  f.cart.save();
});

$('textarea#order_gift_text').change(function(event) {
  console.log("change", event);
  f.cart.set('gift_text', $('textarea#order_gift_text').val());
  f.cart.save();
});
Run Code Online (Sandbox Code Playgroud)

进一步的信息:我认为问题基本上是这里提到的问题:模糊事件停止点击事件工作?

在最好的情况下,我会阻塞,直到save()返回,这可能会解决问题.

Nic*_*oso 0

我不确定我是否完全清楚你的问题。

期望的行为是,如果用户在文本区域中键入,然后将鼠标悬停在提交按钮上并单击,则会进行 ajax 调用

那么您只想在单击按钮时触发 ajax 吗?不是一更改字段数据就立即进行吗?如果是这种情况,更改处理程序中的代码应该位于单击处理程序中,并且您根本不需要绑定更改。

至于点击本身没有发生,您的意思是表单没有提交吗?或者你没有触及下面的线?

console.log("content clicked");
Run Code Online (Sandbox Code Playgroud)

如果是后者,你确定'content'是你的按钮的id吗?如果表单未提交,请确保您的点击处理程序没有返回 false