3


0

複数のフォームのjQuery UI確認ダイアログ

同じページにいくつかのフォームがあり、同じコードを使用してすべてのフォームに確認ダイアログを追加したいと思います。 これらはすべて、確認フォームのクラスを持ち、確認ダイアログのタイトルは動的に生成される必要があります(atmが機能していません)。

htmlには、ページの読み込み時に非表示になるダイアログがあり、 `dialog( 'open')`関数が呼び出されると表示されます。

これは私が今持っているものであり、まったく動作していません、ダイアログがロードされますが、確認を押すと、else句を何度も繰り返してフォームを送信しません:

var deleteConfirmed = false;
$('form.confirm-form').submit(function(e) {
if ( ! deleteConfirmed)
{
    e.preventDefault();
    var title = $(this).find('input.action').val();
    var $this = $(this);
    console.log('title: ' + title);

    $('#confirm-dialog').attr('title', title);

    $('#confirm-dialog').dialog({
        buttons : {
            "Confirm" : function() {
                deleteConfirmed = true;
                $(this).dialog('close');
                $this.submit();
            },
            "Cancel" : function() {
                $(this).dialog('close');
            }
        }
    });

    $('#confirm-dialog').dialog('open');
}
else
{
    $(this).submit();
    deleteConfirmed = false;
}
});

2 Answer


2


編集

解決策の1つを次に示します。 jsFiddleで異常な動作をしていたので、ライブサーバーでテストしました。 注:複数のフォームに対応していなかったため、元の投稿を破棄しました。 そして、ほとんどの場合、フォーム送信はAJAXで送信されます。

x.htmlのソース

SO



























var $current = { form : null, do_submit : false };

$('#dlg1').dialog({
    title: "Confirmation",
    width: 300,
    height: 200,
    autoOpen: false,
    modal: true,
    buttons : {
      "Confirm" : function(e){
        $current.do_submit = true;
        $(this).dialog('close');
      },
      "Cancel"  : function(e){
         $current.do_submit = false;
         $(this).dialog('close');
      }
    }
});

$('#dlg1').bind('dialogbeforeclose', function(){
    if($current.do_submit){
      ($current.form).submit();
      $current.form = null;
      $current.do_submit = false;
    }
});

$('.submitter_btn').click(function(e){
    e.preventDefault();
    $current.form = $(this).parents('form:first');
    $('#dlg1').dialog('open');
});

x.phpのソース



0


http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ [このスクリプト]が見つかるまで、私は自作検証を使用していました。 脳の損傷がはるかに少ないため、ほぼすべてのタイプまたはフォーム要素の組み合わせについて十分に検証できるようです。 要素ごとにクラス宣言を1つだけ実行すると、少なくとも検証が有効になります。 ページごとに2つ(またはそれ以上)を実行するには、フォームIDまたは名前ごとに1つをインスタンス化します。 とても簡単!