使用 .submit() 事件处理程序通过 JQuery 循环表单字段
Posted
技术标签:
【中文标题】使用 .submit() 事件处理程序通过 JQuery 循环表单字段【英文标题】:Loop through form fields with JQuery using .submit() event handler 【发布时间】:2010-11-29 04:43:37 【问题描述】:我在使用 jquery 提交表单时遇到了一点问题。我过去已经提交了很多表格,但我只是在思考,我如何使用事件处理程序.submit()来提交表单和它的元素,而不会调用表单ID。问题是,我似乎无法用$(这)(这是可能的.Children(),但我只想通过输入字段使用。
这是一个代码sn-p:
$('.editTimeLink').click(function ()
var id = $(this).attr('rel');
$.get('<?php echo $config["httpRoot"]; ?>/ajax.php?ajax=1&sec=time&a=edit&id=' + id, , function (data)
if (data.returnCode == 1)
$('#timeBox_' + id).html(data.data);
$('#timeBox_' + id + ' form').bind('submit', function ()
//$(this).$(':input').each(function ()
//$(this).(':input').each(function ()
$(this).each(':input', function ()
alert("adsf");
);
return false;
);
else if (data.returnCode == 0)
alert(data.data);
, 'json');
return false;
);
如您所见,我正在尝试以“this”形式提醒每个输入元素的字符串“asdf”。
您可以看到 2 行注释掉了我一直在尝试管理的内容。未注释掉的行也不起作用。我知道我如何解决这个问题,例如将表单选择器名称传递给lambda函数,但我只是在思考那里做到这一点?
提前致谢。 克里斯汀。
【问题讨论】:
【参考方案1】:.children() 选择直接子级,因此如果您的表单中有表格或其他标记,您将需要使用 .find()
$(this).find(':input').each(function(i)
console.log($(this).val()); //$(this) now contains the current form field in the loop
);
【讨论】:
【参考方案2】:为什么不能使用children()
?你仍然可以使用each()
。
$(this).children(':input').each(...);
但是,这不起作用:
$(this).each(':input', function ()
alert("test");
);
因为each()
只接受一个参数,即回调 (doc here)。
顺便说一句:使用 JS 调试器,例如,Firebug,是找出为什么不工作的好主意。
【讨论】:
感谢您的回答。是的,我确实知道这一点,但很高兴能把这一切都解决掉。非常感谢。以上是关于使用 .submit() 事件处理程序通过 JQuery 循环表单字段的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的 TypeError:document.getElementById(...).submit 不是 HTMLDocument.<anonymous> 的函数 [重复]