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 代替 or。可能也值得检查null这个:

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

问题是您说“当它不为空文件格式不正确时,显示错误消息”。由于img == ""将不符合第一个条件,因此它属于第二个。由于""不是您批准的文件类型之一,因此它通过了该测试,并进入错误代码。

相反,您需要说“当它不为空文件格式不正确时,显示消息”。这样,当它为空时,第一次测试失败,因此整个条件失败。

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 回答