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「数字ではありません」と言っているので、すでに「notted」です。

以下の行では、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 に答える