【问题标题】:Javascript disable button until all fields are filledJavascript禁用按钮,直到填写所有字段
【发布时间】:2017-10-24 18:08:49
【问题描述】:

希望能提供一些帮助来解决这个问题。 需要使事件侦听器适用于所有元素。所以基本上当你填写姓名,姓氏,即所有字段时,只有按钮应该被启用,即使其中一个字段是空的,按钮也应该被禁用。

 (function () {
 "use strict";

 var knapp = document.getElementById('skicka');

 knapp.disabled = true;

 var f=document.getElementById('fornamn');
 var e=document.getElementById('efternamn');
 var p=document.getElementById('passnr');
 var n=document.getElementById('nat');

 e.addEventListener('change',function(){

  if(e.value==='' ){

 knapp.disabled=true;
   }

 else{
  knapp.disabled=false;
 }
  });

  })();

【问题讨论】:

    标签: javascript button


    【解决方案1】:

    let d = document, [inputs, knapp] = [
        d.querySelectorAll('[type="text"]'),
        d.querySelector('#skicka')]
    knapp.disabled = true
    
    for (i = 0; i < inputs.length; i++) {
      inputs[i].addEventListener('input',() => {
        let values = []
        inputs.forEach(v => values.push(v.value))
        knapp.disabled = values.includes('')
      })
    }
    <form>
      <input id=fornamn type=text><br>
      <input id=efternamn type=text><br>
      <input id=passnr type=text><br>
      <input id=nat type=text><br>
      <input type=button id=skicka value=Complete>
    </form>

    这样就可以了。我更喜欢input 上的事件处理程序而不是change,这样您就可以在键入时看到该按钮已启用。每次您在任何字段中输入任何内容时,它都会一次获取所有值并将它们添加到数组中。 .includes() 是 ES6 中的新方法,是一种检查数组的特定值并返回布尔值的方法。

    【讨论】:

      【解决方案2】:
      var elements = document.querySelectorAll("#fornamn, #efternamn, #passnr, #nat");
      for (var i = 0; i < elements.length; i++) {
        elements[i].addEventListener("change", function() {
          if(document.getElementById("fornamn").value == "" && document.getElementById("passnr").value == "" && document.getElementById("nat").value = "" && document.getElementById("efternamn").value == "") {
              knapp.disabled=true;
          } else {
              knapp.disabled=false;
          }
        });
      }
      

      【讨论】:

      • 它可以工作,但不是指定的。我的意思是,如果所有字段都是字段,而不仅仅是其中一个字段,则任务是启用按钮。使用此代码,只要我在其中一个字段中写入内容,按钮就会启用。
      • 答案已更新。并且还可以对 onChange 事件的元素使用类选择器,这样就不需要循环遍历元素来添加事件监听器
      • 缺少=,应该是...ntById("nat").value == ""...,是的,对我也不起作用。
      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 2021-07-23
      • 2014-07-25
      • 1970-01-01
      相关资源
      最近更新 更多