0

目标:提交前的表单验证

程序:当用户单击确定时,表单验证代码运行。如果有任何空input字段,则返回 false。到目前为止,这一切都有效。

问题:如果返回 false,则下一个确定或关闭按钮无法访问对话框中显示/编辑的输入框的值。警报有效,但是一旦尝试获取input元素的值,javascript就会死亡。

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 会死掉。

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 回答