实际上,我正在验证一个有文本,选择,下拉列表等字段的表单。我有一些必填的字段,并且我给了它们一个必需的类(只有文本字段)。现在,我想遍历所有的表单元素,并检查该元素是否有一个必需的类,然后在该字段后面附加一个*。我已经使用了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元素。有谁可以帮助我,我如何验证此表单。谢谢
发布于 2011-05-07 22:09:55
正如你所说的,你想要追加 '*‘。你想把它插进去。
我们将使用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;
}希望这能有所帮助。干杯。
发布于 2011-05-07 19:20:12
您可以使用.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")只是一个元素(我假设是submit按钮)。没有必要这样做。
以下是代码的重写版本:
function validate_form() {
var valid = true;
$('form .required').each(function(){
if ($(this).val()==''){
$(this).after('<span>*</span>');
valid = false;
}
});
return valid;
}备注:
不需要提交,因为你的函数内部的逻辑不依赖于提交button
.each函数的值,就像你尝试的那样,不会像你期望的那样工作。如果您从.each函数返回false,它将简单地停止:text.required:text")将匹配所有具有.required类的文本字段,而不是像您预期的那样只匹配一个。发布于 2016-11-30 22:39:08
https://stackoverflow.com/questions/5920661
复制相似问题