目标:提交前的表单验证
过程:当用户单击“确定”时,表单验证代码将运行。如果有任何空的input
字段,则返回false。到目前为止,这一切都有效。
问题:如果返回false,则下一个okay或关闭按钮无法访问对话框中显示/编辑的输入框的值。警报有效,但javascript会在尝试获取input
元素的值时立即死亡。
如何在返回false后访问input
元素值?
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';
}
})
更新编辑:
感谢Colleen的深刻见解,我对问题有了更好的理解,并相应地更新了问题。似乎正在发生的事情是,在返回false后尝试读取输入元素值时,javascript会死掉。
答案 0 :(得分:0)
var cn = $('#cn');
...
cn = cn.val();
您将cn声明为js对象,然后尝试将其重新分配为String。这可能是第一次工作(甚至不确定),但后来你肯定会尝试切换回一个对象失败,并导致一个JS异常,可能会阻止你的其余代码执行。
尝试:
var cnText = cn.val()
或类似的东西。或者只是跳过将整个$("#cn")
分配给var部分。