Javascript jQuery输入数字微调器

Javascript jQuery输入数字微调器,javascript,jquery,Javascript,Jquery,我有jQuery微调器上下编号的代码: HTML: <div class="container"> <div class="input-group spinner"> <input type="text" class="form-control" value="42"> <div class="input-group-btn-vertical"> <div class="btn btn-default">

我有jQuery微调器上下编号的代码:

HTML:

<div class="container">
  <div class="input-group spinner">
    <input type="text" class="form-control" value="42">
    <div class="input-group-btn-vertical">
      <div class="btn btn-default"><i class="fa fa-caret-up"></i></div>
      <div class="btn btn-default"><i class="fa fa-caret-down"></i></div>
    </div>
  </div>
</div>
这是可行的,但我需要添加两个选项:

  • 防止用户将数字添加到输入
  • 设置数字的最大值和最小值
如何添加此选项

演示更改:

<input type="text" class="form-control" value="42">

致:


从您的问题中我不太明白您是否希望用户能够更改值,如果您不希望他们更改值,只需将readonly属性添加到输入字段,如下所示

<input type="number" min="0" max="10" steps="1" class="form-control" value="5" readonly>

更改:

<input type="text" class="form-control" value="42">

致:


从您的问题中我不太明白您是否希望用户能够更改值,如果您不希望他们更改值,只需将readonly属性添加到输入字段,如下所示

<input type="number" min="0" max="10" steps="1" class="form-control" value="5" readonly>

要使用jQuery完成这一切,我假设您需要:

$(document).ready(function(){
    //Stop people from typing
    $('.spinner input').keydown(function(e){
        e.preventDefault();
        return false;
    });
    var minNumber = 1;
    var maxNumber = 10;
    $('.spinner .btn:first-of-type').on('click', function() {
        if($('.spinner input').val() == maxNumber){
            return false;
        }else{
            $('.spinner input').val( parseInt($('.spinner input').val(), 10) + 1);
        }
    });

    $('.spinner .btn:last-of-type').on('click', function() {
        if($('.spinner input').val() == minNumber){
            return false;
        }else{
            $('.spinner input').val( parseInt($('.spinner input').val(), 10) - 1);
        }
    });
});
我没有查过,但应该很准确


工作小提琴:

要使用jQuery完成这一切,我假设您需要:

$(document).ready(function(){
    //Stop people from typing
    $('.spinner input').keydown(function(e){
        e.preventDefault();
        return false;
    });
    var minNumber = 1;
    var maxNumber = 10;
    $('.spinner .btn:first-of-type').on('click', function() {
        if($('.spinner input').val() == maxNumber){
            return false;
        }else{
            $('.spinner input').val( parseInt($('.spinner input').val(), 10) + 1);
        }
    });

    $('.spinner .btn:last-of-type').on('click', function() {
        if($('.spinner input').val() == minNumber){
            return false;
        }else{
            $('.spinner input').val( parseInt($('.spinner input').val(), 10) - 1);
        }
    });
});
我没有查过,但应该很准确

工作小提琴:更好的方法:

引导snipper工作简单:

HTML

更好的方法:

引导snipper工作简单:

HTML


假设您必须将该数据发送回服务器,设置input readonly属性并为输入值添加一些限制就相当容易了。 这是演示

假设您必须将数据发送回服务器,设置输入只读属性并对输入值添加一些限制,这相当容易。 这是演示

使用此功能,您可以动态添加任意多个跨浏览器兼容的微调器(甚至IE)。当然,您必须包含jquery所需的js和css文件

首先,您必须创建您的输入。请记下该id,以便稍后使用。我总是在输入中为id和name参数输入相同的值

然后把这个放在你的头部

    function createSpinner(elemName, elemVal, elemMin, elemMax, elemStep){
        var mySpinner = $( '#' + elemName ).spinner({
            min: elemMin,
            max: elemMax,
            step: elemStep,
            change: function( event, ui ) {
                var typedVal = $( '#' + elemName ).spinner( 'value' );
                if (typedVal < elemMin || typedVal > elemMax) { 
                    alert('Value must be between ' + elemMin + ' and ' + elemMax);
                    $('#' + elemName).spinner('value', elemVal);
                }
            }
        });    
        $('#' + elemName).spinner('value', elemVal);
    };

有了它,您可以动态添加任意多个跨浏览器兼容的微调器(甚至IE)。当然,您必须包含jquery所需的js和css文件

首先,您必须创建您的输入。请记下该id,以便稍后使用。我总是在输入中为id和name参数输入相同的值

然后把这个放在你的头部

    function createSpinner(elemName, elemVal, elemMin, elemMax, elemStep){
        var mySpinner = $( '#' + elemName ).spinner({
            min: elemMin,
            max: elemMax,
            step: elemStep,
            change: function( event, ui ) {
                var typedVal = $( '#' + elemName ).spinner( 'value' );
                if (typedVal < elemMin || typedVal > elemMax) { 
                    alert('Value must be between ' + elemMin + ' and ' + elemMax);
                    $('#' + elemName).spinner('value', elemVal);
                }
            }
        });    
        $('#' + elemName).spinner('value', elemVal);
    };

如果您真的不想使用
type=“number”
-输入,您可以在
span
或类似文件中显示数字,并将值存储在隐藏的输入字段中,如果您真的不想使用
type=“number”
-输入,您可以将数字显示在
span
或类似的内容中,并将值存储在隐藏的输入字段中,您可能希望将
readonly
属性添加到
input
元素中,以防止用户像OP要求的那样写入其中。您的代码未工作:请在回答之前检查正在运行的代码!如果你删除你的JS,我不太确定你想用它实现什么。您的问题可以是这样的,也可以是这样的,这样我们就可以理解您真正想要做的事情,您可能需要将
readonly
属性添加到
input
元素中,以防止用户像OP提问那样写入该元素。您的代码不起作用:请在回答之前检查正在运行的代码!如果你删除你的JS,我不太确定你想用它实现什么。或者你的问题,这样我们就可以理解你到底想做什么
createSpinner('elementName','0','0','10000','1');