0

我正在为一个网站做一个简单的 jQuery 表单检查器。我在网站上有两种表格:登录表格和注册表单。我的代码如下:

$('.btn').click(function(e) {
    e.preventDefault();
    // DOES SOME ERROR CHECKING HERE
    if { hasError $('div.error').fadeIn() }

    else { $(this).parents('form').submit() }
});

所以我的问题是,登录按钮和注册按钮都有一个名为 btn 的类,我怎样才能让他们检查并提交自己的表单,而不是检查页面上的所有表单,因为 $(this).parents('form ') 会同时获得注册和登录表单吗?

谢谢!

4

6 回答 6

2

没有 $(this) 将获得您点击了相应 btn 的表单。“this”关键字传递一个元素的对象,所以不要担心这段代码会运行良好。

于 2012-04-12T07:23:01.093 回答
2

$(this).parents('form')如果返回多个元素,则您的 html 标记确实有问题。另外,考虑将您的代码缩短为

$('.btn').click(function(e) {

    // DO SOME ERROR CHECKING HERE

    if (hasError) {
        e.preventDefault();
        $('div.error').fadeIn();
    }
});
于 2012-04-12T07:25:24.450 回答
1

给他们id,然后这样处理。

$('#btn1).click(....
$('#btn2).click(....
于 2012-04-12T07:28:34.650 回答
0

更改您的 HTML 表单结构,以便当您单击任一按钮时,您可以选择相应的表单。

<form action="get">
    <input type="text" value="1" />
    <input type="button" class="btn" />
</form>

<form action="get">
    <input type="text" value="1" />
    <input type="button" class="btn" />
</form>

和 jQuery:

$(function(){
    $(".btn").click(function(){
        $(this).closest("form").submit();
    });
});

编辑

更好的错误处理选择器

$(this).closest('form').find('.required').each(function(){
});

http://jsfiddle.net/c9GXZ/6/

于 2012-04-12T07:30:16.973 回答
0

如果你想继续你的代码,那么你可以看看 jQuery 的.parent().parents()方法。

.parents() 和 .parent() 方法是相似的,只是后者只在 DOM 树上向上移动一层。

尝试,使用$(this).closest('form').submit()而不是$(this).parents('form').submit(). 我不是用户,但我认为您已在表单中包含表单(也请检查或共享您的 HTML。)

于 2012-04-12T07:31:07.110 回答
0
$('.btn').click(function(e) {
    e.preventDefault();
    // DOES SOME ERROR CHECKING HERE
    if (hasError) {  $('div.error').fadeIn(); } //some syntax change
    else { $(this).closest('form').submit() }  ///will get the nearest form element and stop there and will submit it as per your code...
});

更新

替换这个

$('.btn').click(function(e) {

有了这个

$('.btn').on('click',function(e){

这让它在你的 jsfiddle url 中工作......

于 2012-04-12T07:31:11.700 回答