监听输入框有值和满足条件时,按钮才可以点击?

遇到这么个需求,如下图,当所需要的东西都不为空时,下一步按钮才可以点击,没有做过不知道怎么下手,求各路大神指点迷津,在此谢过。

clipboard.png

当所要填的内容不为空时,按钮变成可点击状态如下图:

clipboard.png

阅读 9.4k
5 个回答

输入框有输入事件 比如oninput事件 可以在输入事件的时候监听输入框是否有值 也就是有没有value 然后改变button状态

angular,if($scope.phone && $scope.password && $scope.code){点亮下一步}

if (input1.value && input2.value && input3.value) {
// 可点击
}
这是最笨的方法
一楼说的 监听oninput事件 也可以

每个输入框都有一个 oninput吧,然后写一个方法判断三个输入框的值,然后设置

给你个参考吧,写个函数来确认btton是否改变,每次input变化时调用,用双向绑定的框架就更简单了,提交的值全部放在一个数组里面,监听这个数组的变化,判断是否全部有值,进行button的改变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
       .active{
           background: orange;
       }
    </style>
</head>
<body>
       <div class="box">
        <input type="text">
        <input type="text">
        <input type="text">
        <input type="file">
        <button class="btn" disabled="disabled" onclick="aaa()">下一步</button>
       </div>
                                
    <script>
        var oBox = document.getElementsByClassName('box')[0];
        var oIp = oBox.getElementsByTagName('input');
        var btn = oBox.getElementsByTagName('button')[0];
        [].slice.call(oIp).forEach(function(element) {
           if(element.type!='file'){
            element.oninput = function(){
                btnclick();
            }
           }else{
            element.onchange = function(){
                btnclick();
           }
        });
        function btnclick(){
            var flag = true;
            for(var i=0;i<oIp.length;i++){
                if(oIp[i].type!='file'){
                    if(!oIp[i].value){
                        flag = false;
                    }
                }else{
                    if(!oIp[i].files[0]){
                        flag = false;
                    }
                }               
            }
            if(flag){
                btn.disabled = false;
                btn.classList.add('active');
            }else{
                btn.disabled = true;
                btn.classList.remove('active');
            }
        }
    </script>
</body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题