实际上我正在验证一个包含text,select,dropdown et-al字段的表单。我有一些强制性的字段,我给了他们一个必需的类(只有textfields)。现在我想循环遍历所有表单元素并检查该元素是否具有所需的类,然后在该字段之后附加*。我已经使用了each()方法,但是我没有按照我想要的方式工作。
我的代码如下所示:
function validate_form() {
$("#mysubmit").each(function() {
if($("form :text.required:text").val() == "" )
{
$("form :text.required:text").html("*");
return false;
}
return true;
});
}
其中mysubmit是我提交按钮的ID。
我想逐个遍历DOM元素。任何人都可以帮助我如何验证此表单。 感谢
答案 0 :(得分:1)
正如您所说,您希望追加“*”。您试图将插入。
我们将使用class="validation"
创建一个跨度,如下所示:
function validate_form() {
var valid = true;
$('form .required:text').each(function(){
var $spanVal = $(this).next(); //Try to get the validation message (who has '*')
if ($(this).val()!="" && $spanVal.is("span.validation")){ //If text has value
$spanVal.remove(); //remove the asterisk
}else if($(this).val()==""){ //If text is empty
if(!$spanVal.is("span.validation")){ //Create a validation message if it doesn't exist
$('<span class="validation">*</span>').insertAfter(this);
}
valid = false;
}
});
return valid;
}
希望这会有所帮助。欢呼声。
答案 1 :(得分:0)
您可以使用.after
在所需元素后附加*,如下所示:
$('.required').after('<span>*</span>');
要迭代所有必填字段,您可以这样做:
$(.required).each(function(){
//do something with this
//inside this function 'this' is in turn each of the selected elements
alert($(this).val());
});
jQuery.each遍历应用它的选择中的所有元素。在你的情况下$("#mysubmit")
只是一个元素(我假设提交按钮)。没有必要
以下是您的代码的重写版本:
function validate_form() {
var valid = true;
$('form .required').each(function(){
if ($(this).val()==''){
$(this).after('<span>*</span>');
valid = false;
}
});
return valid;
}
注意:
$("#mysubmit").each
,因为您的函数中的逻辑不依赖于提交按钮.each
函数返回值并不像您期望的那样工作。如果您从false
函数返回.each
,则只会停止迭代。.required
的所有文本字段,而不仅仅是一个,正如您所期望的那样。答案 2 :(得分:0)
这是我如何在没有
的情况下解决我的问题