2

ページにフォームがありますが、送信されません。colorbox プラグインを使用してモーダル ダイアログを起動するリンクがあります。送信ボタンは実際にはそのダイアログにあります。フォームを送信するには、モーダルが起動されるまで送信ボタンが DOM に追加されないため、delegate() を使用します。

フォーム送信前にチェックが必要なチェックボックスを追加したのですが、チェックしてもしなくても送信できないので何か抜けていると思います。

これが私のコードです

JS

$('#openModal').colorbox({ 
    html: 'some text <input type="checkbox" name="chk" id="chk"><input id="mySubmit" type="button" value="submit form">' 
});

$('#mySubmit').click(function() {

    if ($('#chk').is(':checked')) {
        $('#myForm').submit();
    } else {
        alert('Must check first...');
    }
});

HTML

    <div id="openModal">open modal</div>

</form>

私は何が欠けていますか?

更新: ID がありませんでした... ああ。それをキャッチしてくれてありがとう@McMaster。IDを追加しました...

4

2 に答える 2

0

この場合、クリック イベントを委任していないようです。

これを試して

$('body').delegate('click' ,'#mySubmit' ,function() {

    if ($('#chk').is(':checked')) {
        $('#myForm').submit();
    } else {
        alert('Must check first...');
    }
});
于 2012-10-08T20:39:28.080 に答える
0

inputカラーボックスで使用される要素を動的に追加しています。nameからへの変更に注意してくださいid

$('#openModal').colorbox({
    html: '<input type="checkbox" id="chk" /><input id="mySubmit" type="button" value="...">';
});

したがって、使用する必要がありますon

$('#mySubmit').on("click", function() {
    if ($('#chk').is(':checked')) {
        $('#myForm').submit();
    } else {
        alert('Must check first...');
    }
});
于 2012-10-08T20:39:34.177 に答える