2011-03-30 21 views
0

フォームを送信するときにJQuery-UIダイアログを表示したいとします。 私はコードを持っていますが、私は以下のアイデアを持っており、どれが最も理想的かを知りたいと思います。フォームをJquery UIダイアログから送信

var openDialog =function(){ 
     //set up dialog . 
     var saveButton = // "OK" of dialog -> click event calls: submit the form 
     var cancel = // "Cancel" of dialog -> click event calls :close the dialog 
    }; 


METHOD 01
iはセットアップ

$('form').submit(function(evt){ 
    openDialog(); 
}); 


疑い
私はこれを行うとform.submitを(呼び出す場合)として、フォームsaveButtonは文句を言わないクリックされなければならないとき再びopenDialogを呼び出すと、サイクルが作成されます。
OR


方法は02
私はセットアップ形式で送信ボタン/リンクをクリックすると、openDialogの()を呼び出しと同様に提出する必要があります。 フォームの送信イベント設定をトリガーせずに、確認の[OK]ボタンをクリックしたときに、form.submit()を呼び出す方法を教えてください。


* 編集:これは、同様に回答することができれば、私はそれを感謝*
このビーイングは語りました。 ASP.NET MVCデータ注釈がフォームに設定されている場合。 MicrosoftValidationsが実行された場合にのみ、ダイアログが開くようにスクリプトを設定する方法。私はASP.MVC 3.0を使用していて、Jquery Validation/Validatorを使用していません。


BottomLine:
私セットアップ1は、あなたが後でそれを提出することができますので、フォームを送信しないようにでpreventDefault()を追加します。フォーム

答えて

-1

を提出しようとしたとき、私はモーダルダイアログを取得するように、ダイアログ行う方法、ダイアログ

$('form').submit(function(evt){ 
    evt.preventDefault(); 
    openDialog(); 
    // I think return false should work too 
    return false; 
}); 

編集で:

:[OK]をあなたとopenDialogの中でフォームを送信する必要があります。これを回避するために、無限ループ ありこの場合
$('form')[0].submit() 

イベントを提出は、(Safariで試験)

$().ready(function() 
{ 
$('form').submit(function(evt){ 
    evt.preventDefault(); 
    openDialog(); 
    // I think return false should work too 
    return false; 
}) 
}) 

function openDialog() 
{ 
    if(confirm("ok ?")) 
     $('form')[0].submit()  
    else 
     alert('form not submitted') 
} 
+0

これは、フォームを送信しようとするとダイアログが表示されることを意味します。私のopenDialog()は、クリックするとform.submit()を呼び出す「OK」ボタンを持っています。もう一度openDialog()をトリガーしないでください。 – frictionlesspulley

+0

フォーム送信イベントで 'return confirm(" Ok? ")'を実行するだけで済みます。また、私は、どのような摩擦が彼自身のカスタムダイアログを望んで、標準のJavaScript確認ダイアログではないと思う。 – roosteronacid

+0

確認はほんの一例です。あなたが望むことができます – JiDai

1

縮退アプローチをトリガされません。私の頭の上オフ...

<form> 
    <input type="submit" id="submit" text="Submit" /> 
</form>  


$("#submit").click(function() 
{ 
    // open dialog here 

    return false; 
}); 


JavaScriptが無効になっている場合、フォームは単純に提出します。しかし、JavaScriptが有効になっている場合、送信ボタンのクリックイベント(フォーム内)はダイアログを開き、フォームが送信されないようにします。今あなたがする必要があるのは、ダイアログの「OK」ボタンにクリックイベントを添付し、そこからフォームを送信することです。

+0

javascriptが有効で、ユーザーがEnter/Returnキーを押してフォームを送信するとどうなりますか?この場合はダイアログが表示されません。 – frictionlesspulley

+0

これは動作しません - 開いているダイアログは非ブロックです。 – Hogan

関連する問題