2016-07-20 3 views
0

Я настроил радио кнопку, как это:Простой способ переключения переключателя с помощью JavaScript/Ajax?

<hr /> 
<h2>PhoneyTV Cabana</h2> 
<p> 
    <input type="radio" id="phoneyRadio1" value="0" onclick="toggleParticlePower(phoneyID, phoneyPowerFunction, this.value)" name="led" />Off 
    <input type="radio" id="phoneyRadio2" value="1" onclick="toggleParticlePower(phoneyID, phoneyPowerFunction, this.value)" name="led" />On 
</p> 

должен быть более простым способом обновления их стата, чем это:

$.getJSON(myURL, function(data) { 
    state = (parseInt(data.result) == 1) 
    if (state) { 
    $('#phoneyRadio1').attr('checked', false); 
    $('#phoneyRadio2').attr('checked', true); 
    } else { 
    $('#phoneyRadio2').attr('checked', false); 
    $('#phoneyRadio1').attr('checked', true); 
    } 
}); 

Я попытался просто сделать кнопку «активной» выделена, но у меня возникли проблемы с этим ...

Какой очевидный ярлык мне не хватает?

+1

Проверка переключателя автоматически отменяет удаление других в той же группе. – JJJ

+0

Я пробовал свой код, я пробовал аналогичный подход, но часто получаю ошибку, где ни один не подсвечивается ... Возможно, что-то другое мешает этому изменению состояния? Есть ли способ обернуть и выполнить эти две строки атомарно? –

+0

@JimfromPrinceton Вы можете попробовать что-то вроде этого: [Обновленный скрипт] (https://jsfiddle.net/RajeshDixit/kecce3ac/1/) – Rajesh

ответ

0
if (state) { 
    $('#phoneyRadio1').attr('checked', false); 
    $('#phoneyRadio2').attr('checked', true); 
} else { 
    $('#phoneyRadio1').attr('checked', true); 
    $('#phoneyRadio2').attr('checked', false); 
} 

В приведенном выше коде, если вы внимательно наблюдать, простой шаблон, который ценят за phoneyRadio1 всегда противоположна состояния и phoneyRadio2 такое же, как состояние. Таким образом, она может быть уменьшена до:

$('#phoneyRadio1').attr('checked', !state); 
$('#phoneyRadio2').attr('checked', state); 

Теперь state = (parseInt(data.result) == 1) сделает state глобальную переменную (отсутствующий var). Во-вторых, вы конвертируете data.result в int, поэтому, поскольку вы соответствуете значениям одного типа, вы должны использовать === вместо ==.

Таким образом, это будет выглядеть как var state = (parseInt(data.result) === 1) или var state = (+(data.result) === 1).

Sample Fiddle

0

Вы можете попробовать это.

$.getJSON(myURL, function(data) { 
    state = (parseInt(data.result) == 1) 
    $('#phoneyRadio1').attr('checked', !state); 
    $('#phoneyRadio2').attr('checked', state); 
}); 
Смежные вопросы