#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");
Попробуйте это. Это не логическое значение.