拥有此代码:
<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">
的价值是否有任何限制?为什么大数字时它的工作方式不正确?有没有解决方案?
答案 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