0

我正在尝试使用 javascript 进行表单验证。如果发现错误,javascript 应该停止将表单发送到服务器。

我通过编写以下语句确保 javascript 返回 false:return false;

并且表单仍然被发送到服务器。

脚本标签:

<script language="javascript" src="validations.js" type="text/javascript"></script>

我的表单标签:

FORM id="frm" name="newCustomer" METHOD="POST" ACTION="register.php" onsubmit="return validateNewCustomer()">

JavaScript 函数:

function validateNewCustomer() {
    var name = document.getElementById('f_name').value;

    var okCustomer = true;

    if (name.value == "") {
        document.getElementById('f_name').value="kossetak";
        document.getElementById('errfname').innerHTML = "Error Name";
        okCustomer = false;
    } else {
        document.getElementById('errname').innerHTML = "";
        okCustomer = true;
    }

    return okCustomer;
}

我感谢您的帮助。谢谢你。

4

2 回答 2

8

你总是从你的函数中返回 true,因为name.value == ""总是 false,所以你输入 else 子句。

请注意,您已经.value在这条线上:

var name = document.getElementById('f_name').value

因此,当您说name.value您正在访问document.getElementById('f_name').value.valuewhich will be时undefined

于 2012-05-02T16:00:38.053 回答
0

也许您应该考虑在 JavaScript 函数中提交表单,而不是使用 HTML 操作参数。

这方面的一个例子是:

<form id="frm" name="newCustomer" onsubmit="return validateNewCustomer()">...</form>

JavaScript:

function validateNewCustomer() {
    var name = document.getElementById('f_name').value;

    var okCustomer = true;

    // name.value replaced to name
    if (name == "") {
        document.getElementById('f_name').value="kossetak";
        document.getElementById('errfname').innerHTML = "Error Name";
        okCustomer = false;
    } else {
        document.getElementById('errname').innerHTML = "";
        // Submit the document here
        document.forms["newCustomer"].submit();
        // Still supply a return value in case you need it later
        okCustomer = true;
    }

    return okCustomer;
}
于 2012-05-02T16:01:39.613 回答