【问题标题】:Controlling input number field min/max控制输入​​数字字段的最小值/最大值
【发布时间】:2017-12-13 04:38:00
【问题描述】:

我有这两个表示时间范围(秒)的输入字段,我需要设置它以使“从/分钟”字段不能高于“到/最大值”,反之亦然。

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

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();
});

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

我该怎么做?

【问题讨论】:

    标签: javascript jquery html range limit


    【解决方案1】:

    当它与您的条件匹配时,您应该调用preventDefault 以防止它继续(例如)增加值。在这里,我绑定到 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">

    【讨论】:

    • 效果很好,仍然需要修改它以防止输入 +/- 和空值。但是你的代码正是我需要的,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多