2014-04-14 2 views
0

Хотелось бы узнать, как связать проверенное состояние флажка с значением в текстовом поле, возвращаемом из SQL-запроса. Значение текстового поля обновляется после того, как пользователь выбирает значение из меню выбора/в форме. Значение параметра меню выбора используется в качестве фильтра в запросе, который работает нормально.Ссылка на состояние отмеченного флажка на значение текстового поля

if ($('#textbox').val("TRUE") 
    { $('#mycheckbox').prop('checked',true);} 
else 
    { 
    $('#mycheckbox').prop('checked',false); 
    } 

Проблема в том, что оператор if работает для предыдущего значения, которое выбрал пользователь. Таким образом, его всегда один клик позади, хотя значение текстового поля является текущим. Хотя значение текстового поля является текущим в форме, когда я делаю окно предупреждения, отображающее значение текстового поля, оно тоже отстает. Таким образом, оператор if в порядке, его просто использует прежнее значение текстового поля, а не текущее. Любой способ сделать это текущим?

+1

Убедитесь, что блок кода выполняется после успешного вызова AJAX. –

+0

Добавьте блок кода при обновлении значения ** текстового поля ** – xiidea

ответ

0

Во-первых, у вас есть синтаксическая ошибка в коде, предполагая, что это опечатка.

Что вы делаете, $('#textbox').val("TRUE") устанавливает значение текстового поля к ИСТИНА.

Таким образом, всякий раз, когда ваш кодовый блок будет выполнен, вы установите флажок с отмеченным флажком и текстовое поле с TRUE значение.

Если вы хотите обновить флажок в соответствии со значением текстового поля. вы можете поместить следующий один код liner вместо четырех строк, когда вы на самом деле устанавливаете/обновляете значение текстового поля.

$ ('# mycheckbox'). Опора ('проверено', $ ('# текстовое поле'). Вал() == "TRUE")

Update

Как вы упомянули, вы устанавливаете новое значение после вызова Ajax и не включали свой образец кода, я угадал, что ваш код что-то вроде:

$.ajax({ 
    url: "your/url" 
}).done(function(data) { 
    $('#textbox').val(data) 
}); 

Если да, то обновить сотрудничества de до

$.ajax({ 
    url: "your/url" 
}).done(function(data) { 
    $('#textbox').val(data); 
    $('#mycheckbox').prop('checked',$('#textbox').val() == "TRUE"); 
}); 

Ответ основан на предположении.

+0

Он по-прежнему проверяет поле на основе значения, выбранного ранее. Его один пользовательский выбор позади. – user3527363

+0

Я спросил, где вы устанавливаете/обновляете значение для текстового поля? – xiidea

+0

@ user3527363: И, пожалуйста, очистите одно, ** «Его один пользовательский выбор позади» ** ваш код не содержит часть вашего механизма выбора! – xiidea

0

Ваш if statment не тестирует значение #textbox, он фактически устанавливает значение.

Попробуйте изменить if заявление следующего содержания:

if ($('#textbox').val() == "TRUE") 

Вот еще SO post, которые могли бы помочь.

+0

== не работал, он по-прежнему использует предыдущий выбор пользователя, а не текущий. – user3527363

Смежные вопросы