2

私は最初に電子メール(必須で正しい形式)で検証を行い、次に送信ボタンでファイルのアップロード(空白または正しい形式)で検証を行っています。
ここでは、電子メールは正常に検証されていますが、ファイルのアップロードで空白の場合は、不要なエラーも表示されます。

コード:

<script type="text/javascript">

    $(document).ready(function () {

     $("#button").click(function () {

         var email = $("#person_email").val();
         var img = $("#person_avatar").val();

         if (email == null || email == "" || !email.match(/^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$/))

         {
             $("#valid").show();
             return false;

         } else if (!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))

         {
             $("#valid_1").show();
             return false;
         } else {
             return true;
         }
     });
 });
</script>
4

3 に答える 3

3

変更してみてください

(!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))

(!img == "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))
于 2013-01-24T05:00:27.070 に答える
2

またはの代わりにandを使用します。おそらくこれもチェックする価値がnullあります:

...
} else if (img != null && img != "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) {
     $("#valid_1").show();
     return false;
}

問題は、「空でない場合、またはファイル形式が正しくない場合は、エラーメッセージを表示する」と言っていることです。img == ""最初の条件が失敗するため、2番目の条件に分類されます。""は承認されたファイルタイプの1つではないため、そのテストに合格し、エラーコードに入ります

代わりに、「空ではなく、ファイル形式が正しくない場合は、メッセージを表示してください」と言う必要があります。そうすれば、空になると最初のテストに失敗するため、条件全体が失敗します。

それがそうであったように、それはifあなたがフィールドに何を入力するかに関係なくブロックに入っているでしょう-それが空の場合、それは間違ったファイルタイプですが、それが空でない場合、それは空ではないので、最初のテストに合格します。

于 2013-01-24T05:00:39.060 に答える
1
(!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))
(!img == "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))

これを編集します。

于 2013-01-24T05:46:24.383 に答える