js动态设置单选输入框(radio)选中状态

有时需要在js中动态控制单选输入框的选中状态,这一般有两种方法:

1.通过设置input单选输入框的元素属性“checked”为“checked”,但需要注意的是,要把上一次设置的“checked”属性去掉,不然再次点击同一个元素的时候,选中状态就会错误。

2.通过设置input单选输入框的DOM节点属性“checked”为true或false来实现。

下面通过一个例子来说明两种方法,这个例子要实现的效果是:点击表格某一行的任何地方(不只是点击单选框),此行就被选中,此时此行的单选框处于选中状态,右边一列文字变蓝色。如下图:

第一种方法

html:

<body>
    <div class="container">
        <table border="1px">
            <tr>
                <td>选择</td>
                <td>季节</td>
            </tr>
            <tr class="season">
                <td><input name="season" type="radio" checked="checked"></td>
                <td>春天</td>
            </tr>
            <tr class="season">
                <td><input name="season" type="radio"></td>
                <td>夏天</td>
            </tr>
            <tr class="season">
                <td><input name="season" type="radio"></td>
                <td>秋天</td>
            </tr>
            <tr class="season">
                <td><input name="season" type="radio"></td>
                <td>冬天</td>
            </tr>
        </table>
    </div>
    <script src="./set_radio_checked.js"></script>
</body>
</html>

<style>
    .container{
        margin:0 auto;
        text-align: center;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    table{
        width: 50%;
    }
    tr > td:first-child{
        width: 20%;
    }
    .checkedNode{
        color:blue;
    }
</style>

js

//上一次选中单选框索引
var preIndex = 0;
var seasonNodes;

(function(){
    seasonNodes = document.querySelectorAll(".season"); 
    seasonNodes[0].classList.add("checkedNode");
    for(var i  = 0;i < seasonNodes.length;i++){
        addClickEvent(i);
    }
})();

function addClickEvent(i){
    seasonNodes[i].onclick = function(e){
        clickRow(e,i);
    };
}

function clickRow(e,index){
    if(preIndex == index){
        return
    }
    document.querySelectorAll(".season")[preIndex].classList.remove("checkedNode");
    //设置下一个选中状态时,要记得移除上一个单选框元素"checked"属性
    document.querySelectorAll(".season")[preIndex].querySelector("input").removeAttribute("checked");
    e.currentTarget.classList.add("checkedNode");
    //设置点击行单选框选中状态
    e.currentTarget.querySelector("input").setAttribute("checked","checked");
    preIndex = index;
}

第二种方法:

html同第一种方法

js与第一种方法有些许不同,在clickRow方法上:


var preIndex = 0;
var seasonNodes;
(function(){
    seasonNodes = document.querySelectorAll(".season"); 
    seasonNodes[0].classList.add("checkedNode");
    for(var i  = 0;i < seasonNodes.length;i++){
        addClickEvent(i);
    }
})();

function addClickEvent(i){
    seasonNodes[i].onclick = function(e){
        clickRow(e,i);
    };
}

function clickRow(e,index){
    if(preIndex == index){
        return
    }
    document.querySelectorAll(".season")[preIndex].classList.remove("checkedNode");
    //将上一次点击行的单选框DOM节点的checked属性置false
    document.querySelectorAll(".season")[preIndex].querySelector("input").checked = false;
    e.currentTarget.classList.add("checkedNode");
    //将本次点击行的单选框DOM节点的checked属性置true
    e.currentTarget.querySelector("input").checked = true;
    preIndex = index;
}


 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在layui中,可以根据输入框的值来选中指定的单选框,可以通过设置单选框的value值来实现。 示例代码如下: HTML代码: ``` <div class="layui-form-item"> <label class="layui-form-label">性别</label> <div class="layui-input-block"> <input type="radio" name="sex" value="男" title="男" lay-filter="sex"> <input type="radio" name="sex" value="女" title="女" lay-filter="sex"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">年龄</label> <div class="layui-input-block"> <input type="text" name="age" lay-verify="required" placeholder="请输入年龄" autocomplete="off" class="layui-input" id="ageInput"> </div> </div> ``` Javascript代码: ``` layui.use(['form'], function(){ var form = layui.form; var ageInput = document.getElementById("ageInput"); //获取年龄输入框元素 ageInput.addEventListener("input", function(){ //监听年龄输入框的输入事件 var age = parseInt(ageInput.value); //获取输入框的值并转换为整型 if(age >= 18){ //当年龄大于等于18岁时,选中“男”单选框 form.val('example', { 'sex': '男' }); }else{ //否则选中“女”单选框 form.val('example', { 'sex': '女' }); } }); }); ``` 以上代码实现了根据输入框的值来选中指定的单选框。当输入框的值大于等于18岁时,选中“男”单选框,否则选中“女”单选框。需要注意的是,这里使用了form.val()方法来设置单选框的值,其中,'example'表示表单的lay-filter属性值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值