Jquery 如何根据单击的提交按钮选择父窗体?
我有一个网页,上面有三张表格。不是嵌套的,只是一个接一个它们几乎相同,只是一个不同的隐藏变量。一个用户只需填写一个表单,我想用一个JS脚本验证/等等所有表单 那么,当用户单击form1的submit按钮时,我如何使我的js脚本只处理form1中的字段呢?我想这和这美元有关。父母,但我不知道该怎么办 我在别处使用的验证脚本,只有一个表单,如下所示:Jquery 如何根据单击的提交按钮选择父窗体?,jquery,forms,Jquery,Forms,我有一个网页,上面有三张表格。不是嵌套的,只是一个接一个它们几乎相同,只是一个不同的隐藏变量。一个用户只需填写一个表单,我想用一个JS脚本验证/等等所有表单 那么,当用户单击form1的submit按钮时,我如何使我的js脚本只处理form1中的字段呢?我想这和这美元有关。父母,但我不知道该怎么办 我在别处使用的验证脚本,只有一个表单,如下所示: $(document).ready(function(){ $("#submit").click(function(){ $
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
所以我需要用$this.parents'form.name.val替换$name.val这样的东西吗?还是有更好的办法
谢谢 您可以这样选择表单:
$("#submit").click(function(){
var form = $(this).parents('form:first');
...
});
但是,通常最好将事件附加到表单本身的提交事件,因为即使在其中一个字段中按enter键进行提交时,也会触发事件:
$('form#myform1').submit(function(e){
e.preventDefault(); //Prevent the normal submission action
var form = this;
// ... Handle form submission
});
要选择表单内的字段,请使用表单上下文。例如:
$("input[name='somename']",form).val();
要获得提交在其中的表单,为什么不
this.form
最简单和最快捷的结果路径。艾琳:不,它不是var nameVal=form.inputname.val;。应该是
在jQuery中:
// you can use IDs (easier)
var nameVal = $(form).find('#id').val();
// or use the [name=Fieldname] to search for the field
var nameVal = $(form).find('[name=Fieldname]').val();
或在JavaScript中:
var nameVal = this.form.FieldName.value;
或组合:
var nameVal = $(this.form.FieldName).val();
使用jQuery,您甚至可以循环使用表单中的所有输入:
$(form).find('input, select, textarea').each(function(){
var name = this.name;
// OR
var name = $(this).attr('name');
var value = this.value;
// OR
var value = $(this).val();
....
});
我在搜索如何查找输入元素的形式时找到了这个答案。我想添加一个注释,因为现在有一种比使用更好的方法:
var form = $(this).parents('form:first');
我不确定它是什么时候被添加到jQuery中的,但是最接近的方法确实比使用父方法更干净。使用“最接近”可将代码更改为:
var form = $(this).closest('form');
它向上遍历,找到与您要查找的内容匹配的第一个元素,并在那里停止,因此无需指定:first。我使用了以下方法&它对我很有效
$('#mybutton').click(function(){
clearForm($('#mybutton').closest("form"));
});
$'mybutton'.ClosesForm帮了我的忙。你也可以用它来选择所有的输入子项:$this.children.FilterInput$input,textarea,select,form为什么不能像在普通Javascript中一样使用var form=$this.form:function onClickbutton{var form=button.form;}????为什么需要jquery包装器呢!因为这也是一个jQuery问题。由于接受的答案还返回一个jQuery对象,我认为这会很好。既然可以不用jQuery,为什么还要用jQuery呢。