如果用户没有完成整个表单但我似乎没有按照我的意愿工作,我想显示一条警告消息。 jQuery .each方法仅从第一个输入字段收集数据。如果我将第一个字段留空,则它可以正常工作,但如果我只填充第一个字段并将其他字段留空,则显示成功是错误的。
// send message on click
$("#submit").click(function() {
// store values
var data = $("#form").serialize();
$(":input, textarea").each(function() {
// if empty show warning
if ( $(this).val() === "" ) {
$(".message-fail").fadeIn(500);
}
// if not empty send message
else if ( !$(this).val() ) {
$.ajax({
type: "POST",
url: "mail.php",
data: data,
success: function() {
$(".message-sent").fadeIn(500);
}
});
}
});
});
答案 0 :(得分:1)
您可以执行以下过程:
但我认为你不需要每场都使用AJAX
if ($.trim(this.value).length) { // if value exists
$(".message-fail").fadeIn(500);
} else { // if no value exists, here no need to elseif
$.ajax({
type: "POST",
url: "mail.php",
data: data,
success: function() {
$(".message-sent").fadeIn(500);
}
});
}
说明:
$.trim(this.value)
- >检查值是否存在
或者也可以使用(第一个更好)
$.trim($(this).val()).length
- >检查值是否存在
答案 1 :(得分:0)
在这一行else if ( !$(this).val() )
中存在错误的条件,即!$(this).val()
请将其设为正确无误...
答案 2 :(得分:0)
你需要在“每个”之外放置“else”,因为第一个有效输入将发布表单:) 制作一个标志变量,在每个内部进行检查......但最好使用简单的循环。并且在检查完成之后再对你的国旗进行检查,如果没有则发布