うーん... theresは、ここで他の答えに問題があります。あなたのHTMLに対して動作しません。フォーム上の要素は、フォームのsubmit
イベントは動作しませんトリガ、submit
のname
を持っている場合は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;
}
}
});
});
あなたは答えとしてこれを掲載している必要があります:)私は誘惑された...ここに – mindandmedia
チュートリアル:[フォームのモーダル確認ダイアログ送信](http://www.jensbits.com/2009/08/10 /モーダル確認ダイアログ上のフォーム提出 - javascript-jquery-ui-and-thickbox-varieties /)。それはプレーンなjsの例を含んでいます。 –
ここに記載されたような確認ボックスを意味しますか:http://www.w3schools.com/js/js_popup.asp または同様のもの:http://forum.jquery.com/topic/jquery-confirm-box –