【问题标题】:Querying input text with javascript and checking for a value does not work使用 javascript 查询输入文本并检查值不起作用
【发布时间】:2020-09-30 09:30:39
【问题描述】:

我想用 Javascript 查询一个输入字段,如果值超过 20,应该释放一个按钮。 Javascript 也可以。不幸的是,如果我用逗号而不是句号输入数字,它将不再有效。

var checkEmpty_ek = document.querySelector('#ek');
checkEmpty_ek.addEventListener('input', function() {
  if (checkEmpty_ek.value >= 20) {
    document.getElementById("neuerbuttonspeichern").disabled = false;
  } else {
    document.getElementById("neuerbuttonspeichern").disabled = true;
  }
});
<input type="text" id="ek" name="ek" value="$ek">
<input type="button" id="neuerbuttonspeichern" value="Send" />

【问题讨论】:

  • 你不能把逗号从值中去掉,让条件的数字统一吗?
  • 你将不得不处理可以输入的内容
  • 我给你做了一个sn-p。
  • 您没有向我们提供很多信息,例如您没有说明此脚本的用途、您将使用谁以及您真正想要做什么。例如,您是否只希望脚本能够正确解释带逗号的数字?还是您想阻止用户在输入中输入逗号?

标签: javascript string input type-conversion numbers


【解决方案1】:

使用类型=数字

var checkEmpty_ek = document.querySelector('#ek');
checkEmpty_ek.addEventListener('input', function() {
  document.getElementById("neuerbuttonspeichern").disabled = checkEmpty_ek.value < 20;
});
$ek<input type="number" id="ek" name="ek" value="0">
<input type="button" id="neuerbuttonspeichern" value="Send" disabled />

【讨论】:

    【解决方案2】:
    if (Number(checkEmpty_ek.value.replace(/,/g, '')) >= 20) {
    { 
         document.getElementById("neuerbuttonspeichern").disabled = false;
    } else 
    {
         document.getElementById("neuerbuttonspeichern").disabled = true;
    });
    

    如果您只是想从输入中删除任何可能的逗号,这将完成。但就像其他人评论的那样,我们并不真正熟悉您的用户交互期望。很有可能,您将过滤掉的不仅仅是逗号。

    【讨论】:

      【解决方案3】:

      只需将逗号替换为点即可。

      Number(checkEmpty_ek.value.replace(",",".")) 
      
      Number ("20.") === 20
      

      var checkEmpty_ek = document.querySelector('#ek');
      checkEmpty_ek.addEventListener('input', function() {
      console.log(checkEmpty_ek.value)
        if (Number(checkEmpty_ek.value.replace(",",".")) >= 20) {
          document.getElementById("neuerbuttonspeichern").disabled = false;
        } else {
          document.getElementById("neuerbuttonspeichern").disabled = true;
        }
      });
      <input type="text" id="ek" name="ek" value="">
      <input type="button" id="neuerbuttonspeichern" value="Send" />

      【讨论】:

        【解决方案4】:

        尝试:let inputValue = Number(checkEmpty_ek.value.replace(",",".")); 内部函数。

        然后检查:(inputValue &gt;= 20)

        这不是最优雅的解决方案,但如果用户使用逗号或字母和特殊字符键入数字,它就会解决。

        再见。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-25
          • 1970-01-01
          • 2018-05-29
          • 1970-01-01
          相关资源
          最近更新 更多