我有一个包含多个输入字段和一个选择字段的表单。我有多个字段所需的属性。我创建了一个验证代码段,它应检查所有必填字段,并在字段为空时显示一条消息。
然而问题是它只在第一个输入字段为空时才有效。我会暗示一个提示。
功能代码:
function lisa_a() {
//validator
var req = $(":input[required]").val();
var reqfield = $(":input[required]");
if (req == ""){
$(".error").remove();
var reqtxt = "<span class='error'>Nõutud</span>";
reqfield.each(function(){
$(this).after(reqtxt);
});
$("div#status").html("Please fill...");
//validator
}else{
var data = $("form#lisa_a_vorm").serialize();
$.ajax({
url : "/var_dump.php", //for testing
method: "POST",
data : data,
success:function(data) {
$("div#status").html(data);
}
});
$("form#lisa_a_vorm :input").each(function(){
$(this).val('');
});
$(".error").remove();
}
}
编辑:
搜索了一些并发现.filter循环遍历字段。调整了我的代码:
function lisa_a() {
//validator
var emptyfields = $(":input[required]").filter(function(){
return $.trim($(this).val()).length === 0;
}).length > 0;
$(".error").remove();
if (emptyfields){
$(":input[required]").after("<span class='error'>Nõutud</span>");
$("div#status").html("Palun täida kõik nõutud väljad!");
}else{
var data = $("form#lisa_a_vorm").serialize();
$.ajax({
url : "/wp-content/themes/origin/TCDB/php/var_dump.php",
method: "POST",
data : data,
success:function(data) {
$("div#status").html(data);
}
});
$("form#lisa_a_vorm :input").each(function(){
$(this).val('');
});
$(".error").remove();
}
}
它并不完美,因为我不太了解.filter基础知识。如果我说过滤器函数返回值为0的修剪所需输入字段的数量,这意味着它们是空的,我是否正确。如果这些字段的数量大于0,则返回true,否则返回false。编辑:我想我得到了重点。解决方案来自this回答。