5

我有一个绑定到它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();
});

更多信息:我认为这个问题基本上是这里解决的问题:模糊事件停止点击事件工作?

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

4

2 回答 2

1

用这个-

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

而不是这个——

$('#content').click(function(event) {
  console.log("content clicked");
});
于 2015-08-06T15:24:57.903 回答
0

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

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

因此,您只希望在单击按钮时触发 ajax?不是一更改现场数据?如果是这种情况,您的更改处理程序中的代码应该在您的单击处理程序中,您根本不需要绑定更改。

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

console.log("content clicked");

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

于 2013-07-03T07:55:40.590 回答