jQuery: настройка переключателя в группе на основе if

#jquery

#jquery

Вопрос:

Это ДОЛЖНО быть просто, я просто знаю, что так и должно быть.

В принципе, у меня есть приведенный ниже код в функции ошибки вызова $.ajax. Сам вызов работает. Вызов происходит, когда значение группы radiobutton меняется с true на false или наоборот. Если возникает ошибка, я хочу сбросить ее до предыдущего значения. Что я понял неправильно?

 if ($("input[name='enableEmail']:checked").val() == "true") {
                $("input[name='enableEmail'][value='false']").attr("checked", true);
            }
            else {
                $("input[name='enableEmail'][value='true']").attr("checked", true);                    
            }
  

РЕДАКТИРОВАТЬ По-видимому, вопрос был недостаточно ясен. У меня есть две переключающие кнопки в группе: Вкл. и Выкл. Если пользователь переключается с Off на On, происходит вызов $.ajax. Если при вызове $.ajax произойдет ошибка, я хочу снова установить переключатель в положение Выкл. Если пользователь переключается с On на Off, я хочу, чтобы он вернулся к On в случае ошибки

Комментарии:

1. Что вообще здесь делает ‘else’?

2. Я думаю, что я упускаю что-то очевидное; но… что ты пытаешься сделать ..?

3. Как сказал Сландау, else кажется избыточным, однако, похоже, это работает. Что именно происходит, когда он срабатывает? jsfiddle.net/w4aXs

4. Отредактированный вопрос, надеюсь, будет более понятным. Прямо сейчас ничего не происходит. Выдается ошибка, и код, похоже, выполняется, но переключатель не меняется.

5. Неважно, окно было кэшировано, не ‘видел последний комментарий.

Ответ №1:

Сначала проверьте, используете ли вы пользовательский интерфейс jQuery и нужно ли вызывать .buttonset(«обновить»). 🙂

HTML и другой контекстный код были бы большим подспорьем. Не имея этого, вы пробовали использовать firebug или что-то в этом роде, чтобы выполнить некоторые проверки работоспособности значений и селекторов jQuery путем вывода на консоль?

 if ($("input[name='enableEmail']:checked").val() == "true") {
    console.log("Got here 1: "   $("input[name='enableEmail'][value='false']").attr("checked"));
    $("input[name='enableEmail'][value='false']").attr("checked", true);
}
else {
    console.log("Got here 2: "   $("input[name='enableEmail'][value='true']").attr("checked"));
    $("input[name='enableEmail'][value='true']").attr("checked", true);                    
}
  

Комментарии:

1. Вполне :). И я не знал о материалах журнала консоли, это удобная информация.

2. Firebug и консоль неоценимы для отладки javascript. Но сделайте это таким образом, чтобы вы могли покинуть свою консоль. регистрируйте инструкции в коде для браузеров, которые это не поддерживают. Быстрый и грязный способ — это window.console amp;amp; console.log amp;amp; console.log( 'message' ); . Поиск в Google в разделе «консоль. ошибки журнала» дадут более элегантные решения.

Ответ №2:

Ошибка для ajax вызывается, когда запросы ajax завершаются неудачей. Вы уверены, что возникает такая ошибка, а не какая-то ошибка в логике, которая возвращает нежелательные результаты?

Кажется, у меня работает… http://jsfiddle.net/gaby/zGvRR

Ответ №3:

Я предполагаю, что у вас есть runat="server" теги ввода для переключателей. Удалите runat тег и попробуйте. это должно сработать.

Ответ №4:

 .attr("checked", "checked");
  

Попробуйте это. Это не логическое значение.