Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态元素的javascript验证_Javascript_Jquery - Fatal编程技术网

动态元素的javascript验证

动态元素的javascript验证,javascript,jquery,Javascript,Jquery,如何验证动态创建的文本输入 我有一个“添加更多”链接来创建新的,还有一个链接来删除它们。每个都有一个uniqe ID 此外,必须至少填写两个文本框。一个简单的方法是计算提交时非空文本框的数量 $(function()) { $('form').submit( function() { if ($(this).find('input:text') .filter( function() { return $(this)

如何验证动态创建的文本输入

我有一个“添加更多”链接来创建新的,还有一个链接来删除它们。每个都有一个uniqe ID


此外,必须至少填写两个文本框。

一个简单的方法是计算提交时非空文本框的数量

 $(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进行验证。。