如何使用jQuery在表单中泛化循环输入元素?

时间:2015-03-19 12:24:45

标签: javascript jquery django-templates client-side-validation

我尝试使用jQuery在表单中循环输入元素,以便我可以进行一些轻量级的客户端验证。我使用Django来生成页面服务器端,而我遇到的问题是特定页面有很多动态生成的表单,所以我不知道它们的id是不可知的。如果我这样做,我可以很容易地进行验证。

因此,在我的javascript中,我试图捕获表单的提交操作,并在找到时,以某种方式获取输入元素,以便我可以检查参数。这是我在其他方面尝试过的事情:

$(".s-inputs").submit(function(event){      
  $(this).filter(':input').each(function(){
    console.log("Doesn't work");
  });
  event.preventDefault();
});

我尝试包含生成下面的html表单的django代码,但是模板系统中的某些东西正在抛弃Stack Overflow的格式化。无论如何,我认为这本来不会很有启发性。基本上我的html只是页面上的任意数量的表单,每个表单都有任意数量的输入,都是动态生成的服务器端。他们共同的唯一共同点是课程输入。"

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用find(),而不是filter()

$(this).find(':input').each(function(){
  console.log("Doesn't work");
});

filter()尝试过滤当前选定的元素(当前只是您的form元素)并删除任何未被过滤的内容。这不会返回任何内容,因为form元素与:input不匹配。

另一方面,

find()搜索当前所选元素中包含的任何匹配选择器。这将匹配:input中包含的任何匹配的form元素。