Javascript 仅选中一个复选框

Javascript 仅选中一个复选框,javascript,razor,Javascript,Razor,我有一个复选框“是”和“否”,所以我希望用户只能使用一个复选框。因此,如果用户勾选“是”,则将清除“否”。如果勾选“是”,则将清除“否” <input type="checkbox" id="Check1" value="Value1" onclick="selectOnlyThis(this.id)" style="margin:1em 1em 5px 5px" @(ViewBag.Status == "Yes" ? " checked" : "")/>Yes &

我有一个复选框“是”和“否”,所以我希望用户只能使用一个复选框。因此,如果用户勾选“是”,则将清除“否”。如果勾选“是”,则将清除“否”

    <input type="checkbox" id="Check1" value="Value1" onclick="selectOnlyThis(this.id)" style="margin:1em 1em 5px 5px" @(ViewBag.Status == "Yes" ? " checked" : "")/>Yes

    <input type="checkbox" id="Check2" value="Value1" onclick="selectOnlyThis(this.id)" style="margin:1em 1em 5px 5px" @(ViewBag.Status == "No" ? " checked" : "")/>No

<script>

     function selectOnlyThis(id) {
                for (var i = 0; i <= 4; i++) {
                    document.getElementById("Check" + i).checked = false;
                }
                document.getElementById(id).checked = true;
            }

</script>
是
不
功能选择仅此(id){

对于其他人提到的(var i=0;i,您描述的是单选按钮的行为。但是,也可以使复选框的行为与此类似

上述代码执行以下操作:

  • $('input:checkbox')
    -选择checkbox类型的所有输入元素

  • 。不是($(这个))
    -除了这个

  • .prop('checked',false)
    -取消选中复选框

此代码使用jQuery javascript库,因此必须引用此库(通常在文档的head标记中),因此:


正如其他人提到的,您描述的是单选按钮的行为。但是,也可以使复选框的行为与此类似

上述代码执行以下操作:

  • $('input:checkbox')
    -选择checkbox类型的所有输入元素

  • 。不是($(这个))
    -除了这个

  • .prop('checked',false)
    -取消选中复选框

此代码使用jQuery javascript库,因此必须引用此库(通常在文档的head标记中),因此:


在这一部分中使用HTML5会更有用/更容易 如果您选择HTML5,下面的代码将起作用,但如果您决定不使用它,则不会有帮助

<input type="checkbox" name="<name>" value="<value"><*explanation*><br/><br/> 
            </form>
        </div>
    </div>
</body>



在这一部分中使用HTML5会更有用/更容易 如果您选择HTML5,下面的代码将起作用,但如果您决定不使用它,则不会有帮助

<input type="checkbox" name="<name>" value="<value"><*explanation*><br/><br/> 
            </form>
        </div>
    </div>
</body>



问题在于您试图访问不存在的元素

循环从0到4,但元素是
Check1
Check2

因此,当它试图设置
Check0
(不存在)的
checked
属性时,它会抛出一个错误并停止执行

使用

功能仅选择此(id){
console.log(id);

对于(var i=0;i而言,问题在于您试图访问不存在的元素

循环从0到4,但元素是
Check1
Check2

因此,当它试图设置
Check0
(不存在)的
checked
属性时,它会抛出一个错误并停止执行

使用

功能仅选择此(id){
console.log(id);

对于(var i=0;i),您想要的行为是“单选”,而不是“复选框”,为什么不使用单选按钮?您想要的行为是“单选”,而不是“复选框”,为什么不使用单选按钮?啊,对了。谢谢您没有投反对票。我会留下答案,以防OP选择走这条路线(我自己早期的js问题最好由jQuery回答,现在我更喜欢它)。是的..jQuery非常方便,但如果你只需要设置复选框,那就太过分了;)啊,对了。谢谢你没有投反对票。我会留下答案,以防OP选择走这条路(我自己早期的js问题最好由jQuery回答,现在我更喜欢它).yep..jquery非常方便,但如果只需要设置复选框,那就太过分了;)
<input type="checkbox" name="<name>" value="<value"><*explanation*><br/><br/> 
            </form>
        </div>
    </div>
</body>
function selectOnlyThis(id) {
    console.log(id);
    for (var i = 0; i <= 4; i++) {
        var element = document.getElementById("Check" + i); // get element
        if (element){ // if element was found only the set its checked property
            document.getElementById("Check" + i).checked = false;
        }
    }
    document.getElementById(id).checked = true;
}
for (var i = 1; i <= 2; i++) {