Jquery:获取复选框的下一个按钮

时间:2015-02-02 12:06:51

标签: jquery

我有这段代码:

$(':checkbox[name="privacy"]').click(function() {
        if ($(this).is(':checked'))
        {
            $("label[for='privacy']").css('color','inherit');
            $('button[type=submit]').removeAttr('disabled');
            $('button[type=submit]').removeClass('btn-danger').addClass('btn-primary');
        }
        else
        {
            $("label[for='privacy']").css('color','#B94A48');
            $('button[type=submit]').attr('disabled', 'disabled');
            $('button[type=submit]').removeClass('btn-primary').addClass('btn-danger');
        }
    });

这就是形式:

<form role="form" method="post" class="ajax-validation" action="{{ @ABSOLUTE_PATH }}{{ @ALIASES.url_newsletter }}">
        <div class="form-group">
            <label for="email" class="required-label">Email *</label>
            <input class="form-control required-field" name="email" type="text" placeholder="La tua email" />
        </div>
        <div class="checkbox">
            <label for="privacy">
                <input type="checkbox" name="privacy" value="1" checked />
                <a href="{{ @ABSOLUTE_PATH }}{{ @ALIASES.url_privacy }}">Accettazione privacy</a>
            </label>
        </div>
        <button type="submit" class="btn btn-success btn-block">
        <i class="fa fa-at"></i> Iscriviti
        </button>
    </form>

基本上我只需要禁用相对于包含该复选框的相同表单的按钮(并且最终没有其他插入同一页面)。

我试过

[...]
$(this).next('button[type=submit]').removeAttr('disabled');
[...]

我如何只能以复选框的相同形式获取提交内容?

3 个答案:

答案 0 :(得分:3)

你可以这样做:

$(this).closest('form').find('button[type=submit]').removeAttr('disabled');

Working DEMO

答案 1 :(得分:0)

尝试:$('button[type=submit]').attr('disabled', false);

如果你有多个表单,你想从按钮上升DOM以避免干扰其他表单:

$(this).closest('form').find('button[type=submit]').attr('disabled', false);

答案 2 :(得分:0)

$(this).parents("form").find("button[type=submit]").removeAttr('disabled')

以上内容可以仅用于查找您所在表单中的按钮,但它很麻烦。

创建多个表单时,

id非常有用