JavaScript 无法将 input.min、input.max、input.value 识别为整数

标签 javascript html

我正在一个网站上工作,如果在提交表单之前数字不在最小值和最大值之间,我希望数字输入能够自行更正。我的代码如下:

HTML:

<input type="number" min="0" max="10" step="0.01" onblur="CorrectOverUnder(this)" value="0">

JavaScript:

function CorrectOverUnder(sender){

    if(sender.value < sender.min){

        sender.value = sender.min;

    }else if(sender.value > sender.max){

        sender.value = sender.max;
    }
}

它可以很好地纠正任何超出范围的内容,但它也可以将 2 到 10 之间的任何内容纠正为最大值(即 10)。我尝试通过先检查是否有超过最大值的数字来颠倒案例的顺序,但结果是相同的。我该如何解决这个问题?

编辑: 我最终将 JavaScript 更改为:

function CorrectOverUnder(sender){

    if(parseInt(sender.value) < parseInt(sender.min)){

        sender.value = sender.min;

    }else if(parseInt(sender.value) > parseInt(sender.max)){

        sender.value = sender.max;
    }
}

一切都好,还是这在某种程度上仍然是错误的?

最佳答案

在比较它们之前,您需要将值转换为数字,因为当它们是字符串时,JS 会按字母顺序比较它们,这意味着 "2"> "10"

function CorrectOverUnder(sender)
{
  let value = Number(sender.value);
  let min = Number(sender.min);
  let max = Number(sender.max);

  if(value < min){
    sender.value = min;
  }else if(value > max){
    sender.value = sender.max;
  }
}
<input type="number" min="0" max="10" step="0.01" onblur="CorrectOverUnder(this)" value="0">

关于JavaScript 无法将 input.min、input.max、input.value 识别为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48066019/

相关文章:

javascript - 使用phonegap将图像上传到网络服务器的问题

javascript - 单击另一个元素时恢复以前的值

javascript - 对象的随机数组

html - HTML 在页面布局中仍然有作用,这是真的吗?

javascript - 'aria-describedby'什么时候返回空值

javascript - Vuejs 如何在组件中获取自定义对象

javascript - 将事件附加到动态渲染字段的更清晰的方法

javascript - JSFiddle 代码工作,但在 wordpress 中不工作?

javascript - html5和Javascript会取代原生应用吗?

javascript - 带有表格排序器的表格标题中的多行