javascript - 控制输入​​数字字段最小/最大

标签 javascript jquery html range limit

我有这两个表示时间范围(秒)的输入字段,我需要这样设置,以便“from/min”字段不能高于“to/max”,反之亦然。

到目前为止我得到了这个:

jQuery(document).ready(function(){
	jQuery('#from').on( 'input', function( ) {
			if( parseInt( jQuery('#from').val() ) >= parseInt( jQuery('#to').val() ) ) jQuery('#from').val( parseInt( jQuery('#from').val() ) - 1 );
	});
  
	jQuery('#to').on( 'input', function( ) {
			if( parseInt( jQuery('#to').val() ) <= parseInt( jQuery('#from').val() ) ) jQuery('#to').val( parseInt( jQuery('#to').val() ) + 1 );
	});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
From: <input type="number" min="10" step="1" id="from" value="60"><br />
To: <input type="number" min="11" step="1" id="to" value="120">

使用字段或键盘箭头时它工作正常,但我仍然可以在上面键入任何数字/+/- 并低于/高于其他字段。

我正在使用:

jQuery('#from, #to').on( 'keypress', function( e ) {
    e.preventDefault();
});

目前防止输入作为一种解决方法,但我希望能够输入一个数字,同时仍然保持不能低于/高于其他字段的限制

我该怎么做?

最佳答案

当它符合您的条件时,您应该调用 preventDefault 以防止它继续(例如)增加值。在这里,我绑定(bind)到 jQuery 自定义 input 事件,而不是让它也监听 paste 事件。

jQuery(function ($) {
  $('#from').on('input', function (e) {
    var from = parseInt($(this).val(), 10)
    var to = parseInt($('#to').val(), 10)

    if (from >= to) {
      e.preventDefault()
      $(this).val(to -1)
    }
  })
  
  $('#to').on('input', function (e) {
    var from = parseInt($('#from').val(), 10)
    var to = parseInt($(this).val(), 10)
    
    if (to <= from) {
      e.preventDefault()
      $(this).val(from + 1)
    }
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
From: <input type="number" min="10" step="1" id="from" value="60"><br />
To: <input type="number" min="11" step="1" id="to" value="120">

关于javascript - 控制输入​​数字字段最小/最大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785567/

相关文章:

javascript - 如何在智能向导中默认将 class ="done"isdone ="1"?

jquery - typescript 模型到 json - 忽略空值属性

javascript - JQuery 点击操作只工作一次

html - 为什么包含的 div 需要填充以使包含的元素的边距位于 div 中?

javascript - 如何在 Docker 构建上缓存 node_modules?

javascript - 在 Chrome 和 FF 之间动态且一致地设置样式属性

javascript - 如何在 "."之后调用函数,javascript

javascript - 在这个父 div 中添加新的父 div 和下一个 div

javascript - 当用户滚动超过某个点时推荐内容弹出

html - 是否可以在 Bootstrap 中向上和向下更改下拉箭头