0
後、私はそれに2つのクリックハンドラを持つボタンがあります。JavaScriptのクリックイベントの確認ダイアログ
- は、アクションを確認するために、ユーザーにネイティブJavaScriptの確認ダイアログを表示します。
- 一部の属性を別のフォーム要素に設定し、そのフォームを送信します。
彼らはjQueryのベースだと次のようになります。
$('[data-confirm]').on('click', function (e) {
if (! confirm($(this).data('confirm')) {
e.preventDefault();
e.stopImmediatePropagation();
}
});
$('.js-remove-item').on('click', function (e) {
e.preventDefault();
console.log('clicked');
var $form = $('#remove-item-form');
$form.attr('action', $(this).data('url'));
$form.submit();
});
ボタンHTMLは次のようになります。
<button type="button"
class="btn btn-primary js-remove-item"
data-confirm="Are you sure you want to remove this item?">
しかし、コンソールログを確認するダイアログとして「クリック」表示されています。ユーザーがの場合は、そのイベントリスナーが起動するのは、のアクションを確認するだけです。
どうすればいいですか?
なぜ2つの異なるクリックハンドラーで確認とコードがありますか? 2回のクリックで問題が発生するのは、送信者が送信前に登録する必要があるということです。 – epascarello
'[data-confirm]'クリックハンドラが '.js-remove-item'クリックハンドラの前に定義されている限り、あなたのコードは[ここ](https://jsfiddle.net/6hs9nd50/)で動作しています。 –
idkなぜあなたのコードはうまくいかないのですが、私は確認の要素にフラグを追加します: 'if(確認)$(this).data("確認済み "、true)'そして、彼らは別のコンポーネントなので、ハンドラ –