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

时间:2013-01-29 23:25:21

标签: 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();
});

更多信息: 我认为问题基本上是这里提到的问题:Blur event stops click event from working?

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

2 个答案:

答案 0 :(得分:1)

使用此 -

json

而不是这个 -

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

答案 1 :(得分:0)

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

  

理想的行为是,如果用户键入文本区域,然后鼠标在提交按钮上并单击,则进行ajax调用

所以你只想在单击按钮时触发ajax?更改现场数据后不会立即?如果是这种情况,您的更改处理程序中的代码应该在您的单击处理程序中,您根本不需要绑定更改。

至于点击本身没有发生,你的意思是表格没有提交吗?或者你没有点击下面的一行?

console.log("content clicked");

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