как сделать диалоговое окно подтверждения javascript, если установлен переключатель, с помощью jquery

У меня есть две радиокнопки, как так

<input type="radio" name="rush" value="yes" />
<input type="radio" name="rush" value="no" checked="checked" />

Что я хочу сделать, так это при нажатии кнопки отправки формы проверить, выбрано ли «да».

Если это так, покажите диалоговое окно подтверждения javascript

Я зашел так далеко, но застрял, любая помощь будет оценена по достоинству.

$("form.shipping").submit(function() {

    if($("input[name='rush']".attr("value") === "yes")
    {
        if (confirm("Rush orders are subject to an upcharge. (Just wanted to make sure you read the note). Is this ok?"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

});

person mjr    schedule 09.04.2009    source источник
comment
С этими изменениями он все еще не работает?   -  person Paolo Bergantino    schedule 10.04.2009
comment
да, с приведенным выше кодом я все еще не получаю подтверждения, облом   -  person mjr    schedule 10.04.2009


Ответы (3)


Вы привязываете что-то к событию click кнопки. Вероятно, вы захотите привязать его к событию submit формы. Кроме того, вы неправильно написали input.sumbit-button в своем селекторе.

EDIT: Вот рабочая версия того, что вам нужно. Ваши ошибки были:

  • Вероятно, вы не оборачивали свой код вокруг document.ready. Это важно, если ваш сценарий включен в верхнюю часть страницы, поскольку все, что вы пишете, но не включено в это событие, будет выполнено до создания элементов DOM. Таким образом, вы бы ни к чему не привязывали события. Событие document.ready позаботится об этом, сработав, как только DOM будет полностью загружен.
  • У вас отсутствовало закрытие ) прямо перед .attr. Вам, вероятно, следует изучить такие инструменты, как FireBug, для отладки вашего javascript, так как с его помощью легко найти подобные вещи. .
  • Вы проверяли значение переключателя, но оно всегда оценивалось как true, потому что вам нужно отфильтровать его, чтобы получить только :checked один.

Итак, рабочий код:

$(document).ready(function() {
    $("form.shipping").submit(function() {
        if($("input[name='rush']").is(":checked")) {
            return confirm("Rush orders are subject to an upcharge.
            (Just wanted to make sure you read the note). Is this ok?");
        }
    });
});
person Paolo Bergantino    schedule 09.04.2009
comment
У меня был готовый документ, но я забыл опубликовать его :-( мой плохой - person mjr; 10.04.2009
comment
Ах. Роджер. Я все равно оставлю это предупреждение в качестве предупреждения для всех, кто прочитает это позже. Рад, что это сработало. - person Paolo Bergantino; 10.04.2009

Это не работает в нескольких браузерах? Я видел отчеты о некоторых странных ошибках в IE7, когда подтверждение() не выполнялось в обработчике событий onclick или onsubmit.

person Jeff Mc    schedule 09.04.2009

ваш селектор "input[name='rush']" вернет оба входа, вам нужно "input[name='rush']:checked", как предложил Паоло Бергантино

person Jeff Mc    schedule 09.04.2009