Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单输入值验证_Javascript_Validation_Contact Form - Fatal编程技术网

Javascript 表单输入值验证

Javascript 表单输入值验证,javascript,validation,contact-form,Javascript,Validation,Contact Form,我有一个关于联系方式的问题。我不擅长javascript。现在我们来回答这个问题 我在我的网站上有一个联系表格,其中一个字段叫做安全,用于反垃圾邮件。目前,所有FieldsCept安全性都将通过javascript进行验证,而我是从其他地方获得的。在提交时,安全性字段将由php代码验证。安全域是一个数学问题。如果您填写了所有其他字段,但在安全字段中提供了错误的答案,您将被重定向到表单,并被要求重新填写。我不希望表格是这样的 在这里测试表单-> 我想要的是,如果数学问题的答案是50,访问者只能通过

我有一个关于联系方式的问题。我不擅长javascript。现在我们来回答这个问题

我在我的网站上有一个联系表格,其中一个字段叫做安全,用于反垃圾邮件。目前,所有FieldsCept安全性都将通过javascript进行验证,而我是从其他地方获得的。在提交时,安全性字段将由php代码验证。安全域是一个数学问题。如果您填写了所有其他字段,但在安全字段中提供了错误的答案,您将被重定向到表单,并被要求重新填写。我不希望表格是这样的

在这里测试表单->

我想要的是,如果数学问题的答案是50,访问者只能通过验证并提交正确答案的表格。我想让javascript验证这个值

我正在寻找一个解决方案,使联系形式更好。有什么解决办法吗

下面是处理现有表单的javascript

function validateForm(){
    // set some vars
    var name = document.getElementById('name');
    var phone = document.getElementById('phone');
    var email = document.getElementById('email');
    var location = document.getElementById('location');
    var findus = document.getElementById('findus');
    var inquiry = document.getElementById('inquiry');
    var msg = '';

    if(name.value.length == ''){
        msg+= '*How shall i address you? \n';
        name.className = 'inpBoxError';
    }

    else if(name.value.length < 3){
        msg+= '-Your name is too short, my friend! \n';
        name.className = 'inpBoxError';
    }

    else if((name.value.length<3)||(/[^a-z\s\'\-\.]/gi.test(name.value))) { // invalid - must be minimum of 5 character only
        msg+= '-Please enter your name with words only! \n';
        name.className = 'inpBoxError';
    }

    else if ((phone.value.length == '')) { 
        msg+= '*You should have a cell phone, i guess?! \n';
        phone.className = 'inpBoxError';
    }



    else if ((phone.value.length<1)||(/[^0-9]/gi.test(phone.value))) { // invalid - must be minimum of 10 digits only
        msg+= '-Only Numeric for Phone Field!(Ex:0123456789) \n';
        phone.className = 'inpBoxError';
    }

    else if ((phone.value.length<10)||(/[^0-9]/gi.test(phone.value))) { // invalid - must be minimum of 10 digits only
        msg+= '-Please enter a valid phone number! "10 digits" \n';
        phone.className = 'inpBoxError';
    }

    else if ((email.value.length == '')) { 
        msg+= '*Email is also a good way for us to communicate. \n';
        email.className = 'inpBoxError';
    }

    else if(!/^([a-z0-9])([\w\.\-\+])+([a-z0-9]?)\@((\w)([\w\-]?)+\.)+([a-z]{2,4})$/i.test(email.value)) { // invalid
        msg+= '-Invalid email format! \n';
        email.className = 'inpBoxError';
    }

    else if(location.value.length == ''){
        msg+= '*Please tell me where are you from! \n';
        location.className = 'inpBoxError';
    }

    else if(location.value.length < 5){
        msg+= '-Location name is too short! I am not sure where is the place. \n';
        location.className = 'inpBoxError';
    }

    else if(purpose.value == ''){
        msg+= '*You contact me for...? \n';
        purpose.className = 'multipleError';
    }

    else if(findus.value == ''){
        msg+= '*How did you find me? Did i know you? \n';
        findus.className = 'inpSelectError';
    }

    else if(inquiry.value.length == ''){
        msg+= '*At least tell me something! \n';
        inquiry.className = 'messageBoxError';
    }

    else if(inquiry.value.length < 50){
        msg+= '-Your message is too short! "Minimum 50 characters." \n';
        inquiry.className = 'messageBoxError';
    }

    else if(security.value == ''){
        msg+= '*You must provide correct answer to submit this form! \n';
        security.className = 'inpBoxError';
    }

    // SUbmit form part
    if(msg == ''){
        return true;
    }else{
        alert(msg);
        return false;
    }

}

即使是最愚蠢的机器人也能解析安全性:7+3也许你想使用文字或图像

您可以使用正则表达式来验证安全表单字段,但即使是这个字段也可以由垃圾邮件机器人进行分析。我不会在前端验证此字段。如果出现错误,服务器应该对其进行测试,并再次返回带有前一用户输入前缀的表单


如果需要,可以添加一个隐藏字段,该字段完全不应填充。如果您选择了此隐藏字段的id或标签,许多垃圾邮件机器人将填充一些内容,您可以使用此信息来阻止它们。

这意味着不建议对安全表单字段进行javascript验证?我将使用另一种方法。Javascript在客户端工作。垃圾邮件机器人可以分析它并填写正确的值,而无需阅读问题。我明白了。也许,我现在有一个更好的选择。