1

私はこのような単純なフォームを持っています:

<form method="post" name="change_pass" id="change_pass" action="change_pass2.php">
    <input type="hidden" id="uid" value="<?php echo $userid ?>">
    <div id="dialog" style="display:none">
        <input type="text" name="pass" id="pass">Password :
        <input type="text" name="conf_pass" id="conf_pass">Confirm Password:
    </div>
</form>
<div id="weak" style="display:none" title="Weak password">
    <p >Please make sure your password is atleast 8 characters</p>
</div>
<div id="mismatch" style="display:none" title="Failure">
    <p>Password mismatch</p>
</div>
</body>
</html>

このようなダイアログフォームを作成するためにjquery uiのダイアログ機能を使用していますが、

$(function(){
    $('#dialog').dialog({
        title : 'You must change your password',
        modal : true,
        closeOnEscape: false,
        dialogClass: 'no-close',
        resizable: false,
        draggable: false,
        buttons: {
            'Change Password' : function() {
                if ( $('#pass').val().length <  8 || $('#pass').val() == 'dantours')  {                         
                    $('#weak').dialog();
                }
                else if ( $('#pass').val() != $('#conf_pass').val()){
                    $('#mismatch').dialog();
                }
                else 
                    $('#change_pass').submit();
                }
        }
    }); 
});

しかし、change_pass2.php ページでは、$_POST 配列は空です。私はこれを理解しようとして、モニターに頭をぶつけてきました。

4

2 に答える 2

5

jQueryダイアログは、ここで説明されているように、フォームスコープ外の本文の最後にダイアログを移動します。したがって、データは投稿されません。

これを行う必要があります:

$("#dialog").dialog({your options...}).parent().appendTo($("#change_pass"));
于 2012-06-28T02:27:19.037 に答える
2

コード内の要素の配置場所に関係なく、ダイアログは本文に追加され、フォームの子ではなくなるため、フォームをダイアログの子として持つように html を変更するだけです。

<div id="dialog" style="display:none">
   <form method="post" name="change_pass" id="change_pass" action="change_pass2.php">
       <input type="hidden" id="uid" value="<?php echo $userid ?>">    
         <input type="text" name="pass" id="pass">Password :
        <input type="text" name="conf_pass" id="conf_pass">Confirm Password:    
   </form>
</div>

ボディに追加する理由は、ボディに基づいて配置できるようにするためです

于 2012-06-28T02:33:47.097 に答える