JQuery: переключить кнопку отправки в зависимости от того, согласованы условия или нет - PullRequest
0 голосов
/ 26 марта 2010

У меня есть флажок с идентификатором terms и кнопка отправки в моей форме с классом registration. Я бы хотел, чтобы кнопка отправки была отключена изначально, а затем включалась и выключалась всякий раз, когда пользователь включал и выключал флажок терминов. Я также хотел бы, чтобы при нажатии кнопки «Отправить» появлялось диалоговое окно подтверждения, и если оно будет подтверждено, кнопка «Отправить» снова будет отключена (для предотвращения повторного нажатия). Я получил последнюю часть и первую часть работающей (я думаю), но я не могу понять, как заставить переключение работать. Это то, что я до сих пор:

$(document).ready(function() {

    // Disable submit button initially
    $('form.registration input[type=submit]').attr('disabled', 'disabled');

    // Toggle submit button whenever the terms are accepted or rejected
    $('#terms').change(function() {

        if($('#terms:checked').val() !== null)
            $('input[type=submit]', this).attr('disabled', '');
        else
            $('input[type=submit]', this).attr('disabled', 'disabled');

    });

    // Ask for confirmation on submit and disable submit button if ok
    $('form.registration').submit(function() {

        if(confirm('Have you looked over your registration? Is everything correct?')) {
            $('input[type=submit]', this).attr('disabled', 'disabled');
            return true;
        }

        return false;

    });

});

Может ли кто-нибудь помочь мне сделать эту работу? На данный момент я новичок в JQuery, поэтому приветствуются любые упрощения и исправления.

1 Ответ

3 голосов
/ 26 марта 2010

Эта порция:

$('#terms').change(function() {
    if($('#terms:checked').val() !== null)
        $('input[type=submit]', this).attr('disabled', '');
    else
        $('input[type=submit]', this).attr('disabled', 'disabled');
});

Будет искать только кнопку отправки внутри элемента #terms (это часть , this). Я думаю, что это то, что вы хотите:

$('#terms').change(function() {
   $('input[type=submit]').attr('disabled', !$(this).is(':checked'));
});
...