2011-10-19 37 views
1

「確認してください」ボタンがクリックされたときにフォームを投稿するjQueryダイアログがあります。jQuery-UIダイアログが表示されない<button> POST配列の名前/値

私は私のポストのデータを参照しますが、ボタンは、その名前/値が欠落しています。 enter image description here

は、どのように私はそれがボタンの名前/値を表示するために得ることができますか?

<html><head> 
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var $dialog = $('<div></div>') 
     .dialog({ 
      autoOpen: false, 
      title: 'Are you sure?', 
      modal: true, 
      closeOnEscape: true, 
      buttons: { 
       "Please confirm": function() { 
       $(this).dialog("close"); 
       $('#btnSubscription').parents('form').submit(); 
       }, 
       Cancel: function() { 
       $(this).dialog("close"); 
       } 
      } 
     }); 
    $('#btnSubscription').live('click', function() { 
     $dialog.dialog('open'); 
     return false; 
    }); 
}); 
</script> 
</head><body> 
<form action="/testjQueryDialog.php" method="post"> 
<div> 
    <input name="txtOne" type="text" value="One"> 
    <input name="txtTwo" type="text" value="Two"> 
    <button name="btnSubmit" id="btnSubscription" value="Subscription">Click</button> 
</div> 
<?php echo 'POST<br>'; print_r($_POST); ?> 
</form></body></html> 

答えて

1

問題は、ボタンclickコールバックに常駐しますボタン名/値のペアが返されないため、jQueryUIダイアログボックスが少し破られているようです。

私の回避策は、フォームに非表示フィールドを追加し、それを使用してボタンの値を渡すことです。 アレイ([txtOne] =>ワン[txtTwo] =>二つの[hidSubmit] =>契約)

1

HTML4 spec状態:望ましい結果ここ enter image description here


の例では、この動作を示しているサンプルコードのtestjQueryDialog.phpある「フォームは、複数の送信ボタンを含まれている場合は、唯一の有効送信ボタンが成功しました。」

ブラウザがファクトフォームを無視するように見えるのは、送信ボタンが1つのみで、フォーム送信のダイナミックあなたは$('#btnSubscription').parents('form').submit()を介して、ボタンは成功したコントロールと見なされません。ユーザーの選択に基づいて値を返すことですfalseがコールバックから返されたときに

$('#btnSubscription').live('click', function() { 
    $dialog.dialog('open'); 
    return false; 
}); 

ボタンの活性化が必要なもの、失われた:Returning value from confirmation dialog using JQuery UI dialog

+0

アルテム:お返事をありがとう

$('#btnSubscription').live('click', function() { document.getElementById('hidSubmit').value = document.getElementById('btnSubscription').value $dialog.dialog('open'); return false; }); 

今私の望ましい結果は次のようになります。あなたが提供したリンクは伝播を使用する方法を示しますが、私の質問には答えません。私はそれを試して、それは同じ結果を与えます:投稿データの他のフォーム入力値/ペアを見ることができますが、

+0

正しく伝播されたイベントは、有効化されたボタン値を保持する必要があります。あなたが試したコードを提供するなら何が間違っているかを調べることができます。 –