动态元素的javascript验证
如何验证动态创建的文本输入 我有一个“添加更多”链接来创建新的,还有一个链接来删除它们。每个都有一个uniqe ID动态元素的javascript验证,javascript,jquery,Javascript,Jquery,如何验证动态创建的文本输入 我有一个“添加更多”链接来创建新的,还有一个链接来删除它们。每个都有一个uniqe ID 此外,必须至少填写两个文本框。一个简单的方法是计算提交时非空文本框的数量 $(function()) { $('form').submit( function() { if ($(this).find('input:text') .filter( function() { return $(this)
此外,必须至少填写两个文本框。一个简单的方法是计算提交时非空文本框的数量
$(function()) {
$('form').submit( function() {
if ($(this).find('input:text')
.filter( function() { return $(this).val() != ''; }) < 2) {
... display validation errors...
return false;
}
return true;
});
}):
$(函数()){
$('form')。提交(函数(){
if($(this).find('input:text'))
.filter(函数(){return$(this).val()!='';})<2){
…显示验证错误。。。
返回false;
}
返回true;
});
}):
可以使用。下面是一个例子:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="jquery-1.4.1.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript">
var count = 0;
$(function() {
$('form').validate({
rules: {
input0: {
required: true
}
},
message: {
input0: {
required: 'This field is required'
}
}
});
$('a').click(function() {
count++;
var newElement = $('<input type="text" name="input' + count + '" value="" />');
$('form').append(newElement);
newElement.rules('add', {
required: true,
messages: {
required: 'This field is required'
}
});
return false;
});
});
</script>
</head>
<body>
<form>
<input type="text" name="input0" value="" />
<input type="submit" value="OK" />
</form>
<a href="#">Add input</a>
</body>
</html>
试验
var计数=0;
$(函数(){
$('form')。请验证({
规则:{
输入0:{
必填项:true
}
},
信息:{
输入0:{
必填项:“此字段为必填项”
}
}
});
$('a')。单击(函数(){
计数++;
var newElement=$('');
$('form').append(新元素);
newElement.rules('add'{
要求:正确,
信息:{
必填项:“此字段为必填项”
}
});
返回false;
});
});
我解释了如何向表单动态添加输入,同时为jQuery验证插件添加验证规则
在我的例子中,它是头盔的订单:
//Each set of helmet inputs gets unique IDs
function newHelmetInputs(i){
var inputSet = '';
inputSet += '<label for="helmet'+ i +'color">Helmet '+ i +' Color</label>'
inputSet += '<input id="helmet'+ i +'color" name="helmet['+ i +'][color]"/>'
inputSet += '<label for="helmet'+ i +'size">Helmet '+ i +' Size</label>'
inputSet += '<input id="helmet'+ i +'size" name="helmet['+ i +'][size]"/>'
return inputSet;
}
//Actually adding them to the page
$('#addhelmet').click(function(){
var i = nextNumber(); //nextNumber() is a closure - see my blog for details
var newInputs = newHelmetInputs(i); //i is used above in IDs
$(this).before(newInputs);
('#helmet' + i + 'size').rules('add', {digits: true}); //matching validation rule
});
//每组头盔输入都有唯一的ID
新头盔的功能(一){
变量输入集=“”;
inputSet+=“头盔”+i+“颜色”
输入集+=“”
输入集+=“头盔”+i+“大小”
输入集+=“”
返回输入集;
}
//实际上是将它们添加到页面中
$(“#添加头盔”)。单击(函数(){
var i=nextNumber();//nextNumber()是一个闭包-有关详细信息,请参阅我的博客
var newInputs=newHelmetInputs(i);//i在上面的IDs中使用
$(此).before(新输入);
(“#helmet”+i+“size”).rules('add',{digits:true});//匹配验证规则
});
这篇博文更详细地介绍了如何用PHP处理这个问题
至于必须至少填写两个文本框的要求,我为此写了一个注释,上面写着“要么填写本节中至少X个字段,要么完全跳过本节。”
因此,例如,如果您的表单允许人们订购三明治,并且每个三明治都有一个面包和馅料输入,那么您可以为他们想要订购的任意数量的三明治动态添加字段。他们不必为三明治2填写任何内容,但如果他们这样做,他们必须同时提供面包和填充类型。我已经有了添加更多字段的脚本,我只需要验证,我的元素ID和名称是动态的,是否有可能对类进行验证您应该能够使用类选择器向jQuery Validate添加规则。比如:$(“.someclass”).rules(“add”,{minlength:2});Darin的例子显示了这个插件最初是如何设置规则的。嗨,我的textfield类名是js_txt,告诉我如何用上面的脚本验证这个字段……这是手动验证。提交表单时,它统计具有值的文本输入数。如果有两个以上的值,那么它将进行验证。如果包含值的框少于两个,它将运行您插入的代码以显示验证错误并返回false,从而停止提交。当“必需”文本输入被删除时,会发生什么?@tvanfosson,这一点很好。我想调用
elementToBeRemoved.rules('remove')
应该可以完成这项工作。代码片段确实是我所期望的,但是如果我的猜测是正确的,你只需验证输入字段ID(input0),但我不知道ID名称,bcoz我的ID是动态的,我还有元素移除选项,不可能猜出正确的ID名称,但类是唯一的,是否可以使用id进行验证。。