JQuery/Javascript флажок
Я хочу сделать что-то подобное с чекбоксом. если пользователь нажимает на флажок, он должен изменить свое состояние (флажок -> не проверен и vv.).
мой код:
$('#checkBoxStandard').change(function() {
clickedFormBoxen('standard');
});
function clickedFormBoxen(active){
if(active == 'standard'){
if( $('#checkBoxStandard').is(":checked")){
$('#checkBoxStandard').prop("checked", false);
}else{
$('#checkBoxStandard').prop("checked", true);
}
console.log('ac: '+$('#checkBoxStandard').is(':checked'));
}
К сожалению, флажок не будет снят снова. Первый раз, флажок ставится, но если я нажимаю на него снова, ничего не происходит, он все еще проверен.
Я хочу использовать этот код, чтобы я мог изменить состояние флажка при вызове функции, а не только при взаимодействии с пользователем.
Пожалуйста, помогите мне и извините за мой английский ^^
3 ответа
Как я уже упоминал в своем комментарии к вашему вопросу, с вашей функцией clickedFormBoxen
вы эффективно отмените эффект взаимодействия с пользователем на элементе checkbox. Таким образом, кажется, что вам нужно вызвать обработчик изменений из обработчика щелчков на вашем элементе флажка (я немного упростил код):
function clickedFormBoxen(active) {
if (active == 'standard') {
$('#checkBoxStandard').prop("checked", !($('#checkBoxStandard').prop("checked")));
}
}
$(document).ready( function(){
$('#checkBoxStandard').change( function(e) {
clickedFormBoxen('standard');
1;
});
$('#checkBoxStandard').click(function(e) {
$('#checkBoxStandard').change();
1;
});
});
Вы имеете в виду что-то вроде этого? ( jsFiddle)
HTML
<input type="checkbox" id="checkbox">
<label for="checkbox">Hey,check me!</label>
JavaScript
var respond = true;
function manualCheck(state)
{
respond = false;
$('#checkbox').prop("checked", state);
}
$('#checkbox').change(function ()
{
if (!respond)
{
respond = true;
return;
}
// Your code
}