我有问题将jQuery添加到现有代码中,请帮忙。
我们在页面上出现了几次相同的表单(相同的表单名称,相同的字段,相同的提交按钮,没有为表单定义的id或类),现在我需要使用jQuery验证表单,而不是传入表单对象,jQuery可以告诉哪个表单被提交了吗?
感谢大家的回复,问题解决了: - )
答案 0 :(得分:1)
根据您的问题的评论,您可能需要指定表单的上下文以及您的选择器:
$('form').submit(function() {
var form = $(this);
var myInputValue = $("input[name='myinput']", form).val();
// myInputValue is now the value of the myinput control that is
// within the submitted form
});
请注意,jquery函数采用可选的第二个参数,它是选择的上下文。这应该可以帮助您仅在提交的表单中找到输入元素。
查看此处的文档:
http://api.jquery.com/jQuery/#expressioncontext
@ NiftyDude的答案得到了同样的问题,尽管他没有专门用jquery来获取当前提交表单的孩子。
答案 1 :(得分:0)
为了选择它,是否将#id或.class附加到<form>
标记并不重要。
试试这个:
$('form').submit(function () {
//put your ajax submission code here...
});
答案 2 :(得分:0)
$("form[name='IDENTIFIER']")
如果您在一个页面上有多个表单来定位特定表单
答案 3 :(得分:0)
$('form').submit(function(e) {
// $(this) refers to the current form being submitted
// if you need to, for example iterate over all the inputs
var inputs = $(this)[0].getElementsByTagName('input'); // array of inputs
for(var i = 0; i < inputs.length; i++) { inputs[i].value; }
// this is important to avoid recursive submit
$(this)[0].submit();
return false;
});
答案 4 :(得分:0)
$('form').submit(function(){
var form = $(this);
var inputs = $('input', this);
var isValid = true;
//do validation on the inputs of the form submitted.
if (isValid) {
//do something
}
return false;
});
或者,您可以捕获提交输入操作(我喜欢这样做):
$('input[type="submit"]').click(function(event){
event.preventDefault();
var form = $(this).nearest('form');
var inputs = $('input', form).not(this);
var isValid = true;
//validate inputs
if (isValid) form.submit();
});
请注意,根据您的代码,可能不需要isValid = true
。如果您的任何元素未通过验证且表单提交将无法继续,则可将其设置为false。如果您使用的验证库为您执行此操作并提交表单(如果有效),则不需要它。
有些验证器会在每个失败的项目上设置一个无效的类,您只需检查表单中是否存在具有该类的输入,以确定是否应该提交表单。