Javascript 创建具有负值的自定义数字字段

Javascript 创建具有负值的自定义数字字段,javascript,jquery,html,Javascript,Jquery,Html,我想创建一个自定义数字字段,而不是使用数字类型字段 您有几个问题。首先,keyCode189是减号,因此您不能对此keyCode使用preventDefault()。请参见if条件下的(e.keyCode!==189) 第二,既然我们已经允许使用减号,那么您需要在addNumericOnlyEvent中只允许使用减号 if(element.val() === "-") return; 这是我的密码: $(document).ready(function() {

我想创建一个自定义数字字段,而不是使用数字类型字段


您有几个问题。首先,
keyCode
189是减号,因此您不能对此
keyCode
使用
preventDefault()。请参见if条件下的
(e.keyCode!==189)

第二,既然我们已经允许使用减号,那么您需要在
addNumericOnlyEvent
中只允许使用减号

        if(element.val() === "-")
        return;
这是我的密码:

$(document).ready(function() {
  addNumericOnlyEvent($("#edt"), -5, 100);
});

function addNumericOnlyEvent(element, minValue, maxValue) {
  element.on('input', function(e) { // clamp the value between min and max

        if(element.val() === "-")
        return;

        var currentValue = Number(element.val());

    if (isNaN(parseFloat(currentValue))) {
      element.val(minValue);
    }

    if (currentValue < minValue) {
      element.val(minValue);
    }

    if (currentValue > maxValue) {
      element.val(maxValue);
    }
  });

  element.keydown(function(e) { // check the digits for numbers
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
      (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) ||
      (e.keyCode == 67 && (e.ctrlKey === true || e.metaKey === true)) ||
      (e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) ||
      (e.keyCode >= 35 && e.keyCode <= 39)) {
      return;
    }
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) && (e.keyCode !== 189)) {
      e.preventDefault();
    }
  });
}
$(文档).ready(函数(){
addNumericOnlyEvent($(“edt”),-5100;
});
函数addNumericOnlyEvent(元素、最小值、最大值){
on('input',函数(e){//将值钳制在最小值和最大值之间
if(element.val()==“-”)
回来
var currentValue=Number(element.val());
if(isNaN(parseFloat(currentValue))){
元素.val(最小值);
}
如果(当前值<最小值){
元素.val(最小值);
}
如果(currentValue>maxValue){
元素.val(最大值);
}
});
element.keydown(函数(e){//检查数字
如果($.inArray(例如,keyCode[46,8,9,27,13,110,190])!=-1||
(e.keyCode==65&&(e.ctrlKey==true | | e.metaKey==true))||
(e.keyCode==67&&(e.ctrlKey==true | | e.metaKey==true))||
(e.keyCode==88&&(e.ctrlKey==true | | e.metaKey==true))||
(e.keyCode>=35&&e.keyCode 57))&&e.keyCode<96|e.keyCode>105)&&e.keyCode!==189){
e、 预防默认值();
}
});
}

我能输入77。你说1-5不起作用是什么意思?对不起,我意识到我已经超过100了