1

我正在尝试使用 JavaScript 验证表单,但代码似乎没有执行。正在使用运行良好的 php 处理表单。但是,验证不起作用。有人可以帮我解决这个问题。

<script>
    function validateForm(){
    var x = document.getElementById('name');
    var email = document.getElementById('email');
    var num = document.getElementById('number');
    var size = document.getElementById('size');
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var atpos=email.value.indexOf("@"); 
    var dotpos=email.value.lastIndexOf(".");

    if (x.value == null || x.value == "") {
    alert("Please Enter your name");
    x.foucs;
    x.style.background = 'Yellow';
    return false;
    }
    if(!filter.test(email.value){
    alert('Please provide a valid email address');
    email.focus;
    email.value="";
    return false;
    }
    if(num.value == null && num.value == ""){
    alert('Please enter your mobile number');
    num.focus();
    }
    if(!isNan(num.value){
    alert('Please enter a valid number');
    num.focus();
    num.style.background();
    return false;
    }
    return false;


}
</script>

这是我的html代码。

      <form method="post" name="myForm " onsubmit="return validateForm()" action="myprocessingscript.php" >                                         
                                                <input type="text" name="name"  placeholder="Name" class="text" id="name" />
                                                                                                <input name="email" placeholder="Email" type="text"   class="text" id="email"/>

<input name="number" placeholder="Mobile Number" type="text"  class="text"  id="number"/>

<input name="size"  placeholder="Size" type="text" class="text" id="size"  />
                                                                                        <input type="Submit" value="Submit" class="button">
4

3 回答 3

1

尝试使用x.focus();

x.foucs;不是一个有效的陈述,也不是email.focus;

于 2013-10-04T16:06:51.250 回答
1

工作小提琴

更正拼写foucs并确保所有参考文献都有括号,例如:

email.focus();

没有括号,函数不会被调用。它是有效的 Javascript,但它不会做任何事情。

你也错过了)这里的结束:

if(!filter.test(email.value){
//                         ^ add another )

和这里:

if(!isNan(num.value){
//                 ^ add another )

!isNan(....)应该是isNaN(....)。Javascript 是区分大小写的,你不应该在这里“注意”它。isNaN说“不是一个数字”,所以它已经“没有”。

在下面一行,style 没有背景功能。看起来你想在这里分配一个值而不是调用一个函数:

num.style.background(); // change to assign value.

在这一行上,更改&&||

if(num.value == null && num.value == ""){
//                   ^ should be ||

最后,去掉最后return false的。

于 2013-10-04T16:12:20.323 回答
0

这些是不对的,我不认为:

email.focus;
// Try email.focus();

x.foucs;
// Try x.focus();

还查看您的代码,我没有看到</form>

试试这个:

function validateForm(){
    var x = document.getElementById('name');
    var email = document.getElementById('email');
    var num = document.getElementById('number');
    var size = document.getElementById('size');
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var atpos = email.value.indexOf("@"); 
    var dotpos = email.value.lastIndexOf(".");

    if (x.value == null || x.value == "") {
        alert("Please Enter your name");
        x.focus();
        x.style.background = 'Yellow';
        return false;
    }
    if(!filter.test(email.value){
        alert('Please provide a valid email address');
        email.focus();
        email.value="";
        return false;
    }
    if(num.value == null || num.value == ""){
        alert('Please enter your mobile number');
        num.focus();
        return false;
    }
    if(!isNaN(num.value)){
        alert('Please enter a valid number');
        num.focus();
        num.style.background = "Yellow";
        return false;
    }

    return true;


}
于 2013-10-04T16:08:04.507 回答