как сделать диалог подтверждения JavaScript, если установлен переключатель, с помощью jquery - PullRequest
0 голосов
/ 10 апреля 2009

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

<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;
        }
    }

});

Ответы [ 3 ]

5 голосов
/ 10 апреля 2009

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

РЕДАКТИРОВАТЬ : Здесь - это рабочая версия того, что вы хотите. Ваши ошибки были:

  • Возможно, вы не оборачивали свой код вокруг document.ready. Это важно, если ваш сценарий включен в верхней части страницы, поскольку все, что вы пишете, не заключенное в это событие, будет выполнено до создания элементов DOM. Таким образом, вы будете привязывать события ни к чему. Событие document.ready позаботится об этом путем запуска, как только DOM будет полностью загружен.
  • У вас было пропущенное закрытие ) прямо перед .attr. Вам, вероятно, следует поискать такие инструменты, как FireBug , для отладки вашего javascript, так как с ним легко найти такие вещи.
  • Вы проверяли значение переключателя, но оно всегда оценивалось как истинное, потому что вам нужно отфильтровать его, чтобы получить только :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?");
        }
    });
});
0 голосов
/ 10 апреля 2009

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

0 голосов
/ 10 апреля 2009

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

...