当前位置:  开发笔记 > 前端 > 正文

jquery/js - 如何根据单击的提交按钮选择父窗体?

如何解决《jquery/js-如何根据单击的提交按钮选择父窗体?》经验,为你挑选了3个好方法。

我有一个网页,上面有3个表格.没有嵌套,只是一个接一个(它们几乎完全相同,只有一个不同的隐藏变量).用户只填写一个表单,我想用只有一个JS脚本验证/ etc所有表单.

那么,当用户点击表单#1的提交按钮时,如何让我的js脚本只处理form1中的字段?我认为它与$(this).parents有关,但我不知道该如何处理它.

我的验证脚本(我在别处使用过,只有一个表单)看起来像这样:


$(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}

所以我需要用$("#name").val()替换$(this).parents('form').name.val()?或者有更好的方法来解决这个问题吗?

谢谢!



1> Eran Galperi..:

您可以选择以下形式:

$("#submit").click(function(){
    var form = $(this).parents('form:first');
    ...
});

但是,通常最好将事件附加到表单本身的submit事件,因为即使通过从其中一个字段按Enter键提交,它也会触发:

$('form#myform1').submit(function(e){
     e.preventDefault(); //Prevent the normal submission action
     var form = this;
     // ... Handle form submission
});

要选择表单内的字段,请使用表单上下文.例如:

$("input[name='somename']",form).val();



2> 小智..:

在搜索如何查找输入元素的形式时,我找到了这个答案.我想添加一个注释,因为现在有一个比使用更好的方法:

var form = $(this).parents('form:first');

我不确定它什么时候被添加到jQuery中,但是nearest()方法确实比使用parents()更干净地完成了所需要的操作.最近的代码可以更改为:

var form = $(this).closest('form');

它遍历并找到与您要查找的匹配的第一个元素并停在那里,因此无需指定:首先.



3> redsquare..:

要获得提交内容的形式,为什么不呢

this.form

最简单,最快捷的结果路径.


那是对的.只需使用`$(this.form)`.
为什么需要jquery包装器!
因为这也被问为jQuery问题.并且因为接受的答案也会返回一个jQuery对象,尽管它会很好.所有"为什么用jQuery做到这一点,你可以在没有它的情况下以同样的方式做到".
推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有