我首先通过电子邮件(强制和正确的格式)进行验证,然后在按钮提交上进行文件上传(空白或正确格式)。
这里的电子邮件验证很好,但是如果它是空白的,则在文件上传中它也会显示一个不需要的错误。
代码:
<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>
答案 0 :(得分:3)
尝试更改
(!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))
到
(!img == "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))
答案 1 :(得分:2)
使用而不是或。也可能值得在这个问题上检查null
:
...
} else if (img != null && img != "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/)) {
$("#valid_1").show();
return false;
}
问题在于你说“当它不是空的或它是一个不正确的文件格式时,显示错误信息”。由于img == ""
将失败第一个条件,它将落到第二个条件。由于""
不是您批准的文件类型之一,因此传递该测试,并进入错误代码。
相反,你需要说“当它不是空的和它是一个不正确的文件格式,显示消息”。这样,当它为空时,它会在第一次测试时失败,因此整个条件都会失败。
实际上,无论你输入的是什么,它都会进入if
块 - 如果它是空的那么它是一个错误的文件类型,但如果它不是空的那么它不是空的所以它通过第一次测试。
答案 2 :(得分:1)
(!img == "" || !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))
(!img == "" && !img.match(/(\.bmp|\.png|\.jpg|\.jpeg|\.gif)$/))
编辑此内容。