Javascript验证不是验证

Javascript验证不是验证,javascript,validation,Javascript,Validation,您好,我正在尝试让我的JS验证我的联系方式与以下要求 尝试使用XHTML1.0执行此操作时,此代码有错误: 电子邮件未定义 在线: 这个html代码是不正确的;p <input id="text" type="email" /> 我想你的意思是: <input id="email" type="text" /> 有很多问题,调试的第一步是打开开发人员控制台(F12)并观察错误消息 变化: 已删除var valid=email.match….,这会导致错误,并

您好,我正在尝试让我的JS验证我的联系方式与以下要求

尝试使用XHTML1.0执行此操作时,此代码有错误:

电子邮件未定义 在线:

这个html代码是不正确的;p

<input id="text" type="email" />

我想你的意思是:

 <input id="email" type="text" />

有很多问题,调试的第一步是打开开发人员控制台(F12)并观察错误消息

变化:

  • 已删除
    var valid=email.match….
    ,这会导致错误,并且从未使用返回值
  • 将jsiddle更改为在
    而不是onload中运行,因为您有内联事件处理程序,它需要函数位于全局范围内才能访问
  • 将处理元素的所有代码移到
    onload
    函数中,因为它试图在呈现DOM元素之前访问它们
  • 将电话输入ID从
    text1
    更改为
    phone
  • 删除了隐藏电话号码输入的线路,因为它没有意义
更新代码:

function elem(id) {
    return document.getElementById(id);
};


window.onload = function () {
    document.querySelector("#RadioGroup1_0").click();

    var form = document.getElementById('form');
    form.onsubmit = function (e) {
        var rules = [
            ['first-name', elem('first-name').value.length > 0],
            ['last-name', elem('last-name').value.length > 0],
            ['phone', elem('phone').value.length > 0 && /^(\+\d{1,2})?[\d ()-]+$/.test(elem('phone').value)]
        ];

        function alpha(e) {
            var k;
            document.all ? k = e.keyCode : k = e.which;
            return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8);
        }

        for (var i = 0; i < rules.length; i++) {
            if (!rules[i][1]) {
                var parent = elem(rules[i][0]).parentNode,
                    message = 'Please check your ' + (parent.textContent || parent.innerText).replace(/^\s*(.*?)\s*$/, '$1').slice(0, -1).toLowerCase() + '.';

                alert(message);

                return false;
            }
        }

        return true;
    };
}


function onlyAlphabets(e, t) {
    try {
        if (window.event) {
            var charCode = window.event.keyCode;
        } else if (e) {
            var charCode = e.which;
        } else {
            return true;
        }
        if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || (charCode === 8)) return true;
        else return false;
    } catch (err) {
        alert(err.Description);
    }
}


var specialKeys = new Array();
specialKeys.push(8); //Backspace
function IsNumeric(e) {
    var keyCode = e.which ? e.which : e.keyCode
    var ret = ((keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
    //document.getElementById("phone").style.display = ret ? "none" : "inline";
    return ret;
}
功能元素(id){
返回文档.getElementById(id);
};
window.onload=函数(){
document.querySelector(“#RadioGroup 1_0”)。单击();
var form=document.getElementById('form');
form.onsubmit=函数(e){
风险值规则=[
['first-name',elem('first-name')。value.length>0],
['last-name',elem('last-name')。value.length>0],
['phone',elem('phone').value.length>0&/^(\+\d{1,2})?[\d()-]+$/.test(elem('phone').value)]
];
函数α(e){
var-k;
document.all?k=e.keyCode:k=e.which;
返回((k>64&&k<91)| |(k>96&&k<123)| | k==8);
}
对于(var i=0;i64&&charCode<91)| |(charCode>96&&charCode<123)| |(charCode==8))返回true;
否则返回false;
}捕捉(错误){
警报(错误描述);
}
}
var specialKeys=新数组();
推(8)//退格
函数为数字(e){
var-keyCode=e.which?e.which:e.keyCode
var ret=((键码>=48&&keyCode)

ValidatorEnable(document.getElementById('txtEmail'),true)

你能给我们你的HTML吗?为什么要使用xhtml?有什么验证规则?@NateKerkhofs你好,Nate,我的HTML在JSFIDLE中。没有真正的理由使用它。有所有的理由来发布你的HTML你的ID值得确认你在你的应用程序中是否使用了正确的IDfunctions@M.chaudhryHTML刚刚成为一种流行语言谢谢你帮我一把,但是有没有可能让它不发出警报?在字段旁边显示错误?谢谢。有可能的话,只需在输入旁边添加一个范围(就像你已经用手机做的那样)并将警报替换为
x.innerHTML=message
。我似乎无法让它工作?你能帮我一下吗?HTML5允许电子邮件类型的输入。
function elem(id) {
    return document.getElementById(id);
};


window.onload = function () {
    document.querySelector("#RadioGroup1_0").click();

    var form = document.getElementById('form');
    form.onsubmit = function (e) {
        var rules = [
            ['first-name', elem('first-name').value.length > 0],
            ['last-name', elem('last-name').value.length > 0],
            ['phone', elem('phone').value.length > 0 && /^(\+\d{1,2})?[\d ()-]+$/.test(elem('phone').value)]
        ];

        function alpha(e) {
            var k;
            document.all ? k = e.keyCode : k = e.which;
            return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8);
        }

        for (var i = 0; i < rules.length; i++) {
            if (!rules[i][1]) {
                var parent = elem(rules[i][0]).parentNode,
                    message = 'Please check your ' + (parent.textContent || parent.innerText).replace(/^\s*(.*?)\s*$/, '$1').slice(0, -1).toLowerCase() + '.';

                alert(message);

                return false;
            }
        }

        return true;
    };
}


function onlyAlphabets(e, t) {
    try {
        if (window.event) {
            var charCode = window.event.keyCode;
        } else if (e) {
            var charCode = e.which;
        } else {
            return true;
        }
        if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || (charCode === 8)) return true;
        else return false;
    } catch (err) {
        alert(err.Description);
    }
}


var specialKeys = new Array();
specialKeys.push(8); //Backspace
function IsNumeric(e) {
    var keyCode = e.which ? e.which : e.keyCode
    var ret = ((keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
    //document.getElementById("phone").style.display = ret ? "none" : "inline";
    return ret;
}
  <asp:TextBox ID="txtEmail" runat="server" onkeypress="return validateNumbers(event);"></asp:TextBox>
  <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtEmail" Enabled="false" ForeColor="Red" ClientIDMode="Static" ErrorMessage="Input valid email address!">  
     And in javascript use like below