0

目的: 送信前のフォーム検証

手順: ユーザーが [OK] をクリックすると、フォーム検証コードが実行されます。空inputのフィールドがある場合は、false を返します。これまでのところ、これはすべて機能します。

問題: false が返された場合、次の [OK] または [閉じる] ボタンは、ダイアログで表示/編集された入力ボックスの値にアクセスできません。アラートは機能しますが、JavaScript はinput要素の値を取得しようとするとすぐに終了します。

inputfalse を返した後に要素の値にアクセスするにはどうすればよいですか?


HTML は次のようになります。

<tr>
    <td>Company Name*<br />
        <input type="text" id="cn" name="co_name" value="'.$client_data['co_name'].'">
    </td>
    <td>Company Main Phone*<br />
        <input type="text" id="cp" name="co_phone1" value="'.$client_data['co_phone1'].'">
    </td>
    <td>Company Website*<br />
        <input type="text" id="cw" name="co_website" value="'.$client_data['co_website'].'">
    </td>
</tr>

Javascript/JQuery は次のとおりです。

var cn = $('#cn');
var cp = $('#cp');
var cw = $('#cw');

$('#co_label').dialog({
    autoOpen: true,
    height: 600,
    width: 800,
    modal: true,
    buttons: 
        {
            Test: function() {
                alert('Clicked the test button');
                return false;
            },
            Okay: function() {
                alert('Okay button clicked');
                cn = cn.val();
                cp = cp.val();
                cw = cw.val();
                if (cn=='' || cp=="" || cw=="") {
                    alert('Fields marked with an asterisk cannot be empty.');
                    return false;
                }else{
                    //Save form data via ajax
                    $( this ).dialog( "close" );
                } //END ELSE
            },
            Cancel: function() {
                alert('Cancel button clicked');
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            window.location = 'index.php';
        }
})

更新編集:

コリーンの洞察に満ちた質問のおかげで、私は問題をよりよく理解し、それに応じて質問を更新しました。起こっているように見えるのは、false を返した後に入力要素の値を読み取ろうとすると、javascript が停止することです。

4

1 に答える 1

0
var cn = $('#cn');

...

cn = cn.val();

cn を js オブジェクトとして宣言し、それを文字列に再割り当てしようとしました。これは最初はうまくいくかもしれませんが (それについては確信が持てません)、後でオブジェクトに戻ろうとして失敗し、残りのコードの実行を妨げる可能性のある JS 例外が発生します。

試す:

var cnText = cn.val() 

または似たようなもの。$("#cn")または、var 部分への割り当て全体をスキップするだけです。

于 2012-10-15T18:46:09.517 に答える