2012-02-24 19 views
1
<form action ="/submit-page/" method='post' class="editable"> 
    <fieldset> 
    <select name="status" id='status'> 
     <option value="Submitted">Submitted</option> 
     <option value="Canceled">Canceled</option> 
       <option value="Application">Application</option> 
    </select> 
      <input type="submit" name="submit" value="SAVE"> 

</form> 

私は上記のフォームを持っています:ドロップダウン値「キャンセル」をクリックして「保存」ボタンを押すと、「はい」と「いいえ」の警告メッセージが表示されます。jQuery確認前に送信

ユーザーが[はい]をクリックした場合は、フォームアクションパラメータで希望どおりに送信ページに移動します。 ユーザーが[いいえ]をクリックすると、ページを更新せずに同じフォームページに留まります。 jQueryでこれを行うことはできますか?

+0

あなたは答えとしてこれを掲載している必要があります:)私は誘惑された...ここに – mindandmedia

+0

チュートリアル:[フォームのモーダル確認ダイアログ送信](http://www.jensbits.com/2009/08/10 /モーダル確認ダイアログ上のフォーム提出 - javascript-jquery-ui-and-thickbox-varieties /)。それはプレーンなjsの例を含んでいます。 –

+0

ここに記載されたような確認ボックスを意味しますか:http://www.w3schools.com/js/js_popup.asp または同様のもの:http://forum.jquery.com/topic/jquery-confirm-box –

答えて

6

うーん... theresは、ここで他の答えに問題があります。あなたのHTMLに対して動作しません。フォーム上の要素は、フォームのsubmitイベントは動作しませんトリガ、submitnameを持っている場合はjQueryのバグ(私はそれはバグだと仮定)が、あります

name属性をinput type="submit"ボタンから削除するか、単に「送信」以外の名前を付ける必要があります。

HTML

<form action ="/submit-page/" method='post' class="editable"> 
    <fieldset> 
    <select name="status" id='status'> 
     <option value="Submitted">Submitted</option> 
     <option value="Canceled">Canceled</option> 
     <option value="Application">Application</option> 
    </select> 
    <input type="submit" value="SAVE" name="submit-button"/> 
    </fieldset> 
</form>​ 

jQueryの

$('#status').on('change', function() { 

    var $this = $(this), 
     val = $this.val(); 

    if (val === 'Canceled' && confirm("are you sure?")) { 
     $this.closest('form').submit(); 
    } 
});​ 

PHP

$submitted = !empty($_POST['submit-button']); 

if($submitted) 
{ 
    // Submit button was pressed. 
} 
else 
{ 
    // Form was submitted via alternate trigger. 
} 

試験PLE

ワーキング:http://jsfiddle.net/xixonia/KW5jp/

が機能していない:http://jsfiddle.net/xixonia/KW5jp/1/

編集

あなたはので、あなたの質問を更新していない、とこの答えは、もはやあなたは何のために有効なソリューションです。探している。代わりにChris Platt's answerをご覧ください。

編集再び

これは、Chris Platt's answerの修正版です。最初の$(...)に含まれるロジックを実行する前に、DOMが準備完了(要素がロードされる)するまで待機します。

$(function() { // this first jQuery object ensures that... 

    /// ... the code inside executes *after* the DOM is ready. 

    $('form.editable').submit(function(){ 
     if ($('#status').val()=='Canceled') { 
      if (!confirm('Warning message here. Continue?')) { 
       return false; 
      } 
     } 
    }); 

}); 
+0

@ Christopher ...名前を削除すると、サーバー側で送信ボタンが押されたことをどのようにチェックしますか?チェックしたい場合 if(!empty($ _ POST ['submit'])) – newbie

+0

名前を変更するだけです*。完全に取り除く必要はありません。私はこれを反映するために私の答えを更新しました。 –

+0

私はChris Plattの答えを試みました。しかし、それはこのサイトでうまくいきませんでした。 http://srikanthrajan.com/test/ 私は別のjqueryライブラリを含めてみましたが、動作しません。 – newbie

0

はい、それは行うことができます。

$('#status').change(function(){ 
    var val = $(this).val(); 
    if(val == 'Submitted') { 
    $('.editable').submit(); 
    return false; 
    } else if (val == 'Canceled') 
    { 
     var answer = confirm('are you sure'); 
     return false; 
    } else { 
    ... 
    } 
}); 

これ、クリス・プラッツソリューションとは対照的に、とすぐにあなたがドロップダウンボックスで選択した値を変更すると、それを行います。送信ボタンをクリックすると、彼はそれを行います。

1
$('form.editable').submit(function(){ 
    if ($('#status').val()=='Canceled') { 
     if (!confirm('Warning message here. Continue?')) { 
      return false; 
     } 
    } 
}); 
+0

これはユーザーが求めるものではありません。 –

+1

これは、ユーザーが尋ねたことの1つの解釈です。彼の質問のタイトルは「フォームを提出した後」と言っています。 –

+0

ありがとうございました.Chris Prattsソリューションは現在の状況には理想的ですが、動作しません。保存ボタンをクリックすると、ステータスが 'キャンセル'されている場合は警告メッセージは生成されません。 – newbie

0

のjQueryでフォームの送信を傍受する最も直接的な方法は、このようなものです:

$("form.editable").submit(function(){ 
    if(confirm("Really submit the form?")) { 
     return true; 
    } else { 
     return false; //form will not be sumitted and page will not reload 
    } 
}); 

詳細についてhttp://jqapi.com/#p=submitを参照してください。

関連する問題