0

JavaScriptを使用してHTMLドキュメントのFirstnameフィールドとSurnameフィールドを検証しようとしています。検証では、ユーザーが有効な名前/名前を挿入したかどうかを確認する必要があります。つまり、入力ボックスに数字や変な文字を入力しないでください。

私はstackoverflowや他の同様のウェブサイトで解決策を探していましたが、残念ながら私が探していた正確な解決策が見つからなかったので、このウェブサイトの周りの誰かが助けてくれることを願っています。

これは私のHTMLコードです:

<form name="contact" method="post" action="contact.php">
                <table width="200" border="0" align="center">
                  <tr>
                    <td><p class="pagetext">Name:</p></td>
                    <td><input type="text" name="fname" id="fname" size="30"/></td>
                  </tr>
                  <tr>
                    <td><p class="pagetext">Surname:</p></td>
                    <td><input type="text" name="sname" id="sname" size="30"/></td>
                  </tr>
                  <tr>
                    <td><p class="pagetext">Email:</p></td>
                    <td><input type="text" name="email" id="email" size="30"/></td>
                  </tr>
                  <tr>
                    <td><input class="btns" type="submit" onclick="validationMain();validationContact();validationErrors();" value="Submit"/></td>
                    <td><input class="btns" type="submit" onclick="validationReset()" value="Reset"/></td>
                  </tr>
                </table>
</form>

これはJavaScriptコードです(質問が乱雑にならないように、無関係な部分は省略してください)。

var errors = "";
var textOnly = /^[A-Za-z]+$/;

function validationMain(){

var firstname = document.getElementById('fname');
var surname = document.getElementById('sname');
var email = document.getElementById('email');
//emailRegEx expression from www.regular-expressions.info/email.html
var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i; 

if (firstname.value == "") {

    errors += "First Name Cannot Be Left Empty\r\n";
} else {

    if (firstname.value != textOnly.value){

        errors += "First Name is Invalid\r\n";
    }
}

if (surname.value == "") {

    errors += "Surname Cannot Be Left Empty\r\n";
} else {

    if (surname.value != textOnly.value){

        errors += "Surname is Invalid\r\n";

    }
}   

if (email.value != ""){
    if (email.value.search(emailRegEx) == -1){

        errors += "Invalid Email Entered\r\n";
    }
} else {

        errors += "Email Cannot Be Left Empty\r\n";

       }            
}

主な問題は、テキストフィールドに入力した名前や名前が何であれ(数字や特殊文字のない正しい名前であっても)無効であるというプロンプトが表示されるため(そうではないはずです)、そこに推測しています私のif条件に何か問題があります。

時間、ヘルプ、および提供された関連情報を事前に感謝します:)

十分な情報を提供できれば幸いです。そうでない場合はお知らせください。

4

2 に答える 2

2

表現を正しく使っていません。

textOnly.test(firstname.value);

test式が一致するかどうかを確認します。

于 2013-01-13T22:08:32.530 に答える
0

次の行は、テキスト フィールドの値を正規表現のプロパティ値と比較しています。

if (firstname.value != textOnly.value){

正規表現で値をテストして、有効かどうかを確認する必要があります。

于 2013-01-13T22:10:56.807 に答える