-3

下面是我的验证脚本。为什么输入电子邮件但不正确时不显示微型红色 X 图像?我被困住了。请帮忙!

<form name="validation" onSubmit="return checkbae()">
    <input type="text" size=18 onkeyup="return checkbae()" name="email">
    <span id="email"   class="email"></span>
    <input type="submit" value="Submit">
</form>
<script language="JavaScript1.2">
    function checkemail() {
        var messageg = document.getElementById('email');
        var str = document.validation.email.value
        var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]        {2})?)$/i
        if (filter.test(str))
            testresults = true
        else {
            messageg.style.color = red;
            messageg.innerHTML = "\u2718"
            testresults = false
        }
        return (testresults)
    }
    function checkbae() {
        if (document.layers || document.getElementById || document.all)
            return checkemail()
        else
            return true
    }
</script>
4

2 回答 2

2

您需要学习如何使用 javascript 调试器,例如 Firebug。

首先,您缺少很多分号和括号。我知道其中一些是可选的,但是当您添加另一行代码等时,不使用它们几乎肯定会在以后导致头痛。但是,这将是一个问题:

var str = document.validation.email.value   // <-- Semi-colon??
var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

之后,运行您的代码会立即标记一个错误,即red is not defined. 您使用的是 barewordred而不是 string "red"

修复它使其工作。

function checkemail() {
    var messageg = document.getElementById('email');
    var str = document.validation.email.value;
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]        {2})?)$/i;
    if (filter.test(str)) {
        testresults = true;
    } else {
        messageg.style.color = "red";
        messageg.innerHTML = "\u2718";
        testresults = false;
    }
    return testresults;
}

function checkbae() {
    if (document.layers || document.getElementById || document.all) {
        return checkemail();
    } else {
        return true;
    }
}

演示:http: //jsfiddle.net/hFjPm/

请注意,我刚刚注意到,X当电子邮件正确时,您永远不会清除X. 您需要确保在if过滤器块中将其删除。使用一点 CSS,您也可以简化代码,只需隐藏和显示X,而不是每次都重新创建 html。

演示:http: //jsfiddle.net/txNTh/

于 2013-07-30T17:02:17.197 回答
0

不知道这是否可以帮助你,但这是我想出的。

<form name="validation" onSubmit="return checkbae();" method="post" >
    <input type="text" size="18" name="email" />
    <span id="email" class="email"></span>
    <input type="submit" value="Submit"/>
</form>



function checkemail() {
    var str = document.validation.email.value;
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    var testresults;
    if (filter.test(str))
        testresults = true;
    else {
        $(".email").text("\u2718").css("color", "red");
        testresults = false;
    }
    return (testresults);
}
function checkbae() {
    if (document.layers || document.getElementById || document.all)
        return window.checkemail();
    else
        return true;
}
于 2013-07-30T17:01:22.673 回答