0

電子メールが有効であることを確認するためにvalidateForm()メソッドを取得しようとしています(これは行っています)。また、「名前」フィールドと「コメント」フィールドが空でないことも確認しています。なんらかの理由で 2 番目の部分を下ろすことができず、助けが必要です。ここに私が持っている現在のコードがあります。

<script type="text/javascript">
<!--
function validateForm() {
    var x = document.forms["myForm"]["email"].value;
    var x = document.forms["myForm"]["name"].value;
    var atpos = x.indexOf("@");
    var dotpos = x.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
        alert("Not a valid e-mail address");
        return false;
    }
}
}
if (x == null || x == "") {
    alert("Empty Fields");
    return false;
}
}
// -->
</script>

そしてフォーム:

<form name="myForm" action="http://webdevfoundations.net/scripts/formdemo.asp" onsubmit="return      validateForm()"  method="POST">
Your name: <br>
<input type="text" name="name" ><br>
<br>
Your email: <br>
<input type="text" name="email"><br>
<br>
Your comments: <br>
<textarea name="comments" rows="15" cols="50"></textarea><br><br>
<input type="submit" value="Submit">
</form>
4

5 に答える 5

0

まず、コードに構文エラーがあります。冗長な中括弧が2つあるようです。次に、2つのフィールドの両方をxに割り当てると、名前フィールドのみがその値を取得します。また、最初に電子メールフィールドが空かどうかを確認してから、操作することをお勧めします。最後に、私はあなたの電子メールのチェックが正しいとは思いません。例:xxx@a.info。だからあなたは試すことができます:

function checkEmail(aEmail){
    var pattern=//w+([-+.']/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/; 
    var objExp=new RegExp(pattern);
    if(objExp.test(str)==true){
        return true;
    }else{
        return false;
    }
}

function validateForm() {
    var x = document.forms["myForm"]["email"].value;
    var y = document.forms["myForm"]["name"].value;
    if (x == "" || y == "") {
        alert("Empty Fields");
        return false;
    }
    if (!checkEmail(y)) {
        alert("Not a valid email");
        return false;
    }
}
于 2013-03-23T12:43:27.203 に答える
0

両方のフォーム フィールドを変数に割り当てていますx

于 2013-03-23T12:21:26.303 に答える
0

namefieldとの両方に同じ変数を使用しているのはなぜですかemail。意味がありません。

コードにもう 1 つの構文エラーがあります。つまり、}2 番目の条件をチェックする前に余分なものを入れました。したがって、その条件はその関数の外になります

function validateForm() {
    var x = document.forms["myForm"]["email"].value;
    var y = document.forms["myForm"]["name"].value;
    var atpos = x.indexOf("@");
    var dotpos = x.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
        alert("Not a valid e-mail address");
        return false;
    }
    if (x == "" || y == "") {
          alert("Empty Fields");
          return false;
       }
}

これがJS Fiddleの例です

于 2013-03-23T12:21:44.467 に答える
0

この方法を試してください:

    function validateForm(){
        var x=document.forms["myForm"].getElementsByName('email').value;
        var y=document.forms["myForm"].getElementsByName('name').value;
        var atpos=x.indexOf("@");
        var dotpos=x.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
            alert("Not a valid e-mail address");
            return false;
        }
        if (y==null || y==""){
           alert("Empty Fields");
           return false;
        }
   }
于 2013-03-23T12:32:12.627 に答える
0

上記のコードについて留意するために、以下の点を選択する必要があります

(1) 空のフィールドの検証が最初に行われ、次にメール チェックが行われます。(2) コードによると、空のフィールド ロジックは validateForm() の一部ではありません (タイプミスの可能性があります)。そのため、validationForm() メソッドが呼び出されると、このロジックは実行されません (3) return true を記述する必要があります。メソッド validateForm() の最後 (4) フィールドチェックの異なる変数名を使用する

上記のポイントを実行すると、問題の解決に役立ちます。:)

于 2013-03-23T12:37:50.160 に答える