1

我想通过使用jQuery的窗体中的输入元素循环,以便我可以做一些轻量级的客户端验证。我使用Django来生成页面服务器端,我遇到的问题是特定的页面有很多动态生成的表单,所以我不知道它们的ID。如果我做了,我可以轻松地进行验证。我如何一般地使用jQuery在表单中循环输入元素?

因此,在我的javascript我试图捕获表单的提交操作,当发现,以某种方式获取输入元素,以便我可以检查参数。以下是我已经试过除其他事项外:

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

我想包括生成HTML形式以下,但一些在模板系统摆脱它的堆栈溢出的格式Django的代码。无论如何,我认为这不会很有教育意义。本质上,我的html只是页面上的任意数量的表单,每个表单都有任意数量的输入,全部是动态生成的服务器端。他们共同分享的唯一东西就是班级的“投入”。

感谢您的任何帮助。

+0

还包含您正在选择的部分html – arkoak 2015-03-19 12:30:10

+0

它基本上是任意数量的通用,其中包含任何数量的,其数量我不知道提前。我可以将它们全部分配给同一个类,并且我可以使用django的工具为它们分配一个唯一的ID,但是我不知道会生成多少个ID,因此我无法在这些ID中对这些JavaScript进行硬编码。我需要一个通用的和程序化的方式来循环响应jquery .submit()函数的表单中的内部输入。看到这里的输入示例表单:[链接](http://jsfiddle.net/rxwwoo2a/)谢谢。 – user45183 2015-03-19 16:20:34

回答

0

你应该使用find(),不filter()

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

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

find()另一方面搜索包含在当前选定元素内的任何匹配选择器。这将匹配您的form中包含的任何匹配:input元素。

+0

感谢您的回复。改变它找到一些进展。现在我收到一条消息记录到控制台。但是,只有一条消息被记录,并且该表单中有两个输入。当有两个输入时,它怎么会只循环一次?请看我的生成的HTML如下所示:http://jsfiddle.net/rxwwoo2a/谢谢。 – user45183 2015-03-19 13:48:49

相关问题