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");

後者の場合、'content' はボタンの ID ですか? フォームが送信されていない場合は、クリック ハンドラーが false を返していないことを確認してください。

于 2013-07-03T07:55:40.590 に答える