亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在文本框輸入固定數字時,選中多選框的某個元素,限制多選框的選中個數為什么沒有效果?

在文本框輸入固定數字時,選中多選框的某個元素,限制多選框的選中個數為什么沒有效果?

幕布斯6054654 2019-03-20 16:19:07
題目描述限制多選框的選中個數,用一個方法單獨寫出來,在文本框輸入數字選中多選框的某個元素時,到了該限制的時候沒有反應。題目來源及自己的思路來源:慕課網JavaScript的一道題目+我自己的一點想法。思路:先判斷多選框是否選中,如果已經開始選中就調用限制多選框選中個數的方法,網上說要設置點擊多選框觸發方法,然后在該方法中將checked設置為false,但是文本框控制多選框不需要點擊多選框,所有不能觸發該方法,多選框用onclick方法將設置多選框的checked=false后,多選框元素還是被選中了,查了好多資料都沒有解決。相關代碼<body> <form>      請選擇你愛好:<br>      <input type="checkbox" name="hobby" id="hobby1">  音樂      <input type="checkbox" name="hobby" id="hobby2">  登山      <input type="checkbox" name="hobby" id="hobby3">  游泳      <input type="checkbox" name="hobby" id="hobby4">  閱讀      <input type="checkbox" name="hobby" id="hobby5">  打球      <input type="checkbox" name="hobby" id="hobby6">  跑步 <br>      <input type="button" value = "全選" onclick = "checkall();">      <input type="button" value = "全不選" onclick = "clearall();">      <p>請輸入您要選擇愛好的序號,序號為1-6:</p>      <input id="wb" name="wb" type="text" >      <input name="ok" type="button" value="確定" onclick = "checkone();">    </form>    <script type="text/javascript">    function checkall(){        //全選        var hobby = document.getElementsByTagName("input");          for(var i=0;i<hobby.length;i++){          if(hobby[i].type=="checkbox"){                 hobby[i].checked=true;            }          }    }        function clearall(){        // 全不選        var hobby = document.getElementsByName("hobby");        for(var i=0;i<hobby.length;i++){        if(hobby[i].checked==true){            hobby[i].checked=false;        }      }                }        function checkone(){        //選一個        var num=0;        var j=document.getElementById("wb").value;        var hobby=document.getElementsByName("hobby");        if(j<=0||j>6){            alert("請輸入正確的數字!");        }else        {        hobby[j-1].checked=true;        }        for(var i=0;i<hobby.length;i++){         if(hobby[i].checked==true){            autoCheck("hobby",3);         }       }        }你期待的結果是什么?實際看到的錯誤信息又是什么?期待:無論是點擊多選框還是在文本框中輸入數字控制多選框,到了限制條件時都無法再選中。錯誤:文本框輸入數字控制多選框無法觸發限制多選框的方法,與多選框被點擊時觸發方法無法達到一致。
查看完整描述

2 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

在你原來的基礎上改了一點點


<form>

  請選擇你愛好:

  <br>

  <input type="checkbox" name="hobby" id="hobby1"> 音樂

  <input type="checkbox" name="hobby" id="hobby2"> 登山

  <input type="checkbox" name="hobby" id="hobby3"> 游泳

  <input type="checkbox" name="hobby" id="hobby4"> 閱讀

  <input type="checkbox" name="hobby" id="hobby5"> 打球

  <input type="checkbox" name="hobby" id="hobby6"> 跑步

  <br>

  <input type="button" value="全選" onclick="checkall();">

  <input type="button" value="全不選" onclick="clearall();">

  <p>請輸入您要選擇愛好的序號,序號為1-6:</p>

  <input id="wb" name="wb" type="text">

  <input name="ok" type="button" value="確定" onclick="checkone();">

</form>

<script type="text/javascript">

  function checkall() {

    //全選

    var hobby = document.getElementsByTagName("input");

    for (var i = 0; i < hobby.length; i++) {

      if (hobby[i].type == "checkbox") {

        hobby[i].checked = true;

      }

    }

  }


  function clearall() {

    // 全不選

    var hobby = document.getElementsByName("hobby");

    for (var i = 0; i < hobby.length; i++) {

      if (hobby[i].checked == true) {

        hobby[i].checked = false;

      }

    }


  }


  function checkone() {

    //選一個   

    var j = document.getElementById("wb").value;

    var hobby = document.getElementsByName('hobby');

    if (j <= 0 || j > 6) {

      alert("請輸入正確的數字!");

    } else

    if (autoCheck("hobby", 3, 'checkone')) {


      hobby[j - 1].checked = true;

    }


  }

  // 輸入時 限制單個選中的最大個數

  function autoCheck(name, limit, type) {

    var hobby = document.getElementsByName(name);

    if (type == 'checkone') {

      var num = 1;

    } else {

      var num = 0;

    }


    for (var i = 0; i < hobby.length; i++) {

      if (hobby[i].checked) {

        num++

      }

    }

    console.log(num)

    if (num <= limit) {

      return true;

    } else {

      alert('超限了親')

      return false;

    }

  }

  //  直接選擇時限制單個選中的最大個數

  function sigleCheck() {

    var hobby = document.getElementsByName('hobby');

    if (autoCheck("hobby", 3)) {

      for (var i = 0; i < hobby.length; i++) {

        hobby[i].onclick = function (e) {


          if (autoCheck("hobby", 3, 'sigleCheck')) {


            e.target.checked = true;

          } else {

            e.target.checked = false;

          }



        }



      }


    }

  }

  sigleCheck()


</script>

</body>


查看完整回答
反對 回復 2019-04-10
  • 2 回答
  • 0 關注
  • 415 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號