Я пытаюсь дать пользователю возможность выбрать другой способ продолжить операцию, и ему необходимо установить только один флажок для каждого радио. Так как я могу снять все флажки, если количество выбранных флажков превышает 1?

function testaCheck(idMaster){
    var inputs,i,checados=0;    
    inputs = document.getElementsByTagName("input");        
    for(i=0;i<inputs.length;i++){
        if(inputs[i].type=="checkbox"){     
            if(inputs[i].checked==true){
                checados++;
                document.getElementsByName('DS_MD'+idMaster).value = idMaster;
                $("#formSelectMAWB").find("#masterDireto").val(idMaster);
            }
        }
    }
    if(checados>1){
        alert("Só pode haver um item selecionado.");    
        document.getElementsByTagName(inputs.checked=false);                    
        return ;
    }
};       

<label class="input-control radio">
    <input type="radio" name="idMAWB" id="idMAWB" value="<%=ID_CD_MAWB%>" onClick="selecionaMAWB(this.value)">
    <span class="helper"><%=DS_MAWB%></span>
</label>    

<label for="DS_MD<%=ID_CD_MAWB%>">
    <input type="checkbox" name="DS_MD<%=ID_CD_MAWB%>" id="masterDireto<%=ID_CD_MAWB%>" onClick="testaCheck(<%=ID_CD_MAWB%>)">
    <span class="helper"> <%=ID_CD_MAWB%> </span>
</label>[layout test][1]

Ссылка: [1]: https://i.stack.imgur.com/ ynIAR.png

0
Pietro Rey 3 Май 2019 в 16:02

3 ответа

Лучший ответ

Вы должны правильно отформатировать свой код

function testaCheck(idMaster) {
    var inputs, i, checados = 0;
    inputs = document.getElementsByTagName("input");
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].type == "checkbox") {
            if (inputs[i].checked == true) {
                checados++;
                document.getElementsByName('DS_MD' + idMaster).value = idMaster;
                $("#formSelectMAWB").find("#masterDireto").val(idMaster);
            }
            if (checados > 1) {
                uncheckAll(inputs);
            }

        }
    }
};   

function uncheckAll(inputItems){
    alert("Só pode haver um item selecionado.");
    for (i = 0; i < inputItems.length; i++) {
        inputItems[i].checked = false;
    }
}
0
Andrew Daly 3 Май 2019 в 14:01

Вам нужно использовать prop (), чтобы установить свой флажок.

Вот моя демонстрация

$("#Allcheck").click(function(){
    $('input:checkbox').not(this).prop('checked', this.checked);
});
0
sk5202 3 Май 2019 в 13:21
    function testaCheck(idMaster) {
    var inputs, i, checados = 0;
    inputs = document.getElementsByTagName("input");
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].type == "checkbox") {
            if (inputs[i].checked == true) {
                checados++;
                document.getElementsByName('DS_MD' + idMaster).value = idMaster;
                $("#formSelectMAWB").find("#masterDireto").val(idMaster);
            }

        }

    }
    if (checados > 1) {
                uncheckAll(inputs);
                document.getElementsByName('DS_MD' + idMaster).value = null;
                $("#formSelectMAWB").find("#masterDireto").val(null);
            }
};  

function uncheckAll(inputItems){
    alert("Só pode haver um item selecionado. Favor refazer a seleção");
    for (i = 0; i < inputItems.length; i++) {
        inputItems[i].checked = false;
    }
}

Спасибо за помощь, вот мой окончательный код, где все проверки могут быть сняты, а значение установлено в ноль перед снятием отметки.

0
Pietro Rey 3 Май 2019 в 17:40