【问题标题】:Function doesn't return false in Javascript函数在 Javascript 中不返回 false
【发布时间】:2014-01-30 19:27:46
【问题描述】:

我正在尝试验证我的表单,但是当我创建的函数没有返回 false 时,它​​应该停止提交过程但它没有。

我的代码

var emailRE = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

function formChecker() {
    if (!emailRE.test(document.reservation.email.value)) {
        window.alert("Your e-mail address is invalid");
        return false;
    }

}

我收到了警报,因此函数会检查电子邮件,但随后会停止

【问题讨论】:

  • 你怎么称呼它?
  • 您如何确定这一点?调试时,是否到达过return 行?
  • 简单地返回 false 不会在所有浏览器中停止提交。看看这个:return false not stopping form submit
  • @Renan:错了。问题在于他实际上并没有返回错误。 (在回调中)
  • @JoeDoe 好吧,现在 that 是错误的:onsubmit="return formChecker()" 是最低限度的更改。否则,formChecker 的结果(无论是什么)都会被事件回调丢弃。否则,您可以传入事件对象并使用returnValue(old IE)/preventDefault(everything else)

标签: javascript function validation


【解决方案1】:

先出:

我不确定 document.reservation.email.value 是否总是适用于所有浏览器。多年来,我一直对使用这种表示法感到沮丧。

见:Best Practice: Access form elements by HTML id or name attribute?

以下示例对我来说效果很好。在这里发布了一个小提琴:

<form id="reservation">
    Valid Email:    <input type=text id="validemail" value="abc@def.com">
    <label id=Result1>Result is: </label>
    <br>
    Invalid Email: <input type=text id="invalidemail" value="abc@def.">
    <label id=Result2>Result is: </label>
</form>

var emailRE = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

function formChecker(oElement) {
    if (!emailRE.test(oElement)) {
        window.alert("Your e-mail address is invalid");
        return false;
    } else {
        window.alert("Your e-mail address is valid");
        return true;
    }
}

document.getElementById("Result1").innerHTML = "Result is: " + formChecker(document.forms["reservation"].validemail.value);

document.getElementById("Result2").innerHTML = "Result is: " + formChecker(document.forms["reservation"].invalidemail.value);

在此处查看工作示例:http://jsfiddle.net/vNmt4/1/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多