目的: 送信前のフォーム検証
手順: ユーザーが [OK] をクリックすると、フォーム検証コードが実行されます。空input
のフィールドがある場合は、false を返します。これまでのところ、これはすべて機能します。
問題: false が返された場合、次の [OK] または [閉じる] ボタンは、ダイアログで表示/編集された入力ボックスの値にアクセスできません。アラートは機能しますが、JavaScript はinput
要素の値を取得しようとするとすぐに終了します。
input
false を返した後に要素の値にアクセスするにはどうすればよいですか?
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 が停止することです。