<input type =“number”/>似乎无法使用大数字

时间:2016-03-22 12:36:49

标签: javascript input numbers

拥有此代码:

  <form id="filterprice" method=get onsubmit="window.location = 'catalog/{$category->url}{if $brand}/{$brand->url}{/if}?price_min='+price_min.value+'&price_max='+price_max.value;return false;">
    <input type="number" id="price_min" name="price_min" min="0" onchange="check_min()" value={$price_min}> - <input type="number" id="price_max" name="price_max" min={$price_min} value={$price_max}>
    <input type="submit" value="Подобрать">
  </form>

<script>
  function check_min() {
  document.getElementById('price_max').min=document.getElementById('price_min').value;
    if(document.getElementById('price_max').min > document.getElementById('price_max').value) {
      document.getElementById('price_max').value=document.getElementById('price_max').min;
    }
  }
</script>

即。我的价值40000在&#34; price_min&#34;和40001000 in&#34; price_max&#34;。脚本设置&#34; min&#34;属性&#34; price_max&#34;当前价值&#34; price_min&#34;每当我改变最后一个。所以,如果我改变&#34; price_min&#34;到40002&#34; min&#34;属性&#34; price_max&#34;设置为40002.但它也设置了&#34; price_max&#34;的当前值。到40002.好像它只是中断&#34; price_max&#34;的3位数。更不用说&#34;价值&#34;这些<input>标记的属性即使我可以在页面上更改它们也不会更改。 所以问题是:<input type="number">的价值是否有任何限制?为什么大数字时它的工作方式不正确?有没有解决方案?

3 个答案:

答案 0 :(得分:0)

问题是检查字符串而不是数字。所以你需要将它们转换为数字。

function check_min() {
  document.getElementById('price_max').min = document.getElementById('price_min').value;
  
  
  if (Number(document.getElementById('price_max').min) > Number(document.getElementById('price_max').value)) {
    document.getElementById('price_max').value = document.getElementById('price_max').min;
  }
}
<form id="filterprice" method=get>
  <input type="number" id="price_min" name="price_min" min="0" onchange="check_min()" value="123">-
  <input type="number" id="price_max" name="price_max" value="40001000">
  <input type="submit" value="Подобрать">
</form>

答案 1 :(得分:0)

您从.min和/或.value获得的值似乎是字符串,而"40000""40001000"的词汇比较会使"40000"更大。

只需使用if(parseInt(document.getElementById('price_max').min) > parseInt(document.getElementById('price_max').value).)

即可

答案 2 :(得分:-1)

通过为“price_min”和“price_max”提供默认值,代码可以正常运行。jsFiddle code