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 ответа

Пытаться

$('#checkBoxStandard').removeAttr("checked");

Как я уже упоминал в своем комментарии к вашему вопросу, с вашей функцией 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
}
Другие вопросы по тегам