Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 接受带小数点的固定长度数字的简便方法_Javascript_Jquery - Fatal编程技术网

Javascript 接受带小数点的固定长度数字的简便方法

Javascript 接受带小数点的固定长度数字的简便方法,javascript,jquery,Javascript,Jquery,基本上,我需要从输入框中接受一个简单的十进制值字符串。 输入的长度固定为5位数,因此只允许接受5位数的值 但如果整数部分的长度为5,则应能在任何时候容纳至少2个小数点或至少容纳2个小数位数(不包括小数分隔符),但整数部分的长度不应超过5位 我想是这样的: //co2-weight is the class of input field //by default the max-length and size is 6 $( '.co2-weight' ).keyup(function() {

基本上,我需要从输入框中接受一个简单的十进制值字符串。 输入的长度固定为5位数,因此只允许接受5位数的值

但如果整数部分的长度为5,则应能在任何时候容纳至少2个小数点或至少容纳2个小数位数(不包括小数分隔符),但整数部分的长度不应超过5位

我想是这样的:

//co2-weight is the class of input field
//by default the max-length and size is 6
$( '.co2-weight' ).keyup(function() {
      if($(this).val().indexOf('.')>1)
          {
          $('.co2-weight').attr('size','9');
          $('.co2-weight').attr('maxlength','9'); 
          }
      else
          {
          $('.co2-weight').attr('size','6');
          $('.co2-weight').attr('maxlength','6');
          }       
    });
但这里需要再次检查整数部分的长度,并将其设置为5。 有没有较短或方便的方法

更新:


基本问题是在适当的情况下动态调整长度,这些情况在答案中缺失

这是您使用

在您的例子中,这是您需要的正则表达式模式
^([0-9]{0,5}(\.[0-9]{0,2}){0,1})$

在javascript中,您可以这样使用它:

$(this).val().match(/^([0-9]{0,5}(\.[0-9]{0,2}){0,1})$/)
如果未找到匹配项,则此行单独返回null。若找到匹配项,则为匹配项数组

如果需要测试此正则表达式,请使用

验证输入的格式,如以下示例所示

//允许使用12345.12的正则表达式
var regExp=new regExp(/^\d{1,5}\.?\d{0,2}$/);
//初始化表单元素
$('.valid').hide();
$('.invalid').hide();
$('.submit').prop('disabled',true);
$('.co2重量').keyup(函数(){
//基于正则表达式的keyup验证
if(regExp.test($(this.val())){
$('.valid').show();
$('.invalid').hide();
$('.submit').prop('disabled',false);
}否则{
$('.valid').hide();
$('.invalid').show();
$('.submit').prop('disabled',true);
}
});
$('.form').submit(函数(){
//显示输入有效的警报
警报(“已提交”);
});
。有效{
颜色:绿色;
}
.无效{
颜色:红色;
}

在输入中键入一些内容,查看submit按钮是否变为enable

输入格式有效


输入格式必须是您可以使用此代码,这将不允许:

  • 大于5个整数位数,或
  • 超过2位十进制数字,或
  • 超过一个小数点,或
  • 除数字或小数点以外的任何其他字符
它还根据是否有小数点应用属性更改

它响应
输入
事件,因为有一些方法可以在不触发
按键
事件的情况下更改内容(例如通过上下文菜单、鼠标或其他设备)

$('.co2重量')。在('input',function()上{
var good=$(this.val()
//删除坏字符和多个点
.替换(/[^\d.]\.(?=.*\.)/,“”)
//删除任何超过5个整数的数字
.replace(/^(\d{5})\d+/,“$1”)
//删除任何超过2位的十进制数字
。替换(/(\。\d\d)。+/,“$1”);
if(好!=$(this.val()){
//只有当某些东西必须修复时,才更新
$(此).val(良好);
}
var pointPos=good.indexOf('.');
//根据点的存在确定最大尺寸
变量大小=良好。指数('.')>1?8:6;
//使用道具而不是属性
$('co2重量').prop('size',size);
$('.co2重量').prop('maxlength',尺寸);
});


输入:
所以基本上您希望允许12345.12,对吗?是的,这意味着末尾没有其他尾随空格(这就是正则表达式末尾的$)。如果您担心可能会出现问题,可以在测试之前修剪字符串@乔伊·罗汉在再次阅读你的问题后,我想我明白了。。。您首先希望最大长度为5。如果输入值是5位,那么您希望将最大长度扩展到8位(5位,1点,2位小数),对吗?效果很好!谢谢