3

这可能是一个愚蠢的问题或错字,但我还是要问......我有以下表格,当提交表格时,我想检查所有的值input type="number"并确保用户是否有一些原因是在输入的开头放置一个零,例如 01、025、0100,只要值不为零,就可以删除第一个零。使用 jQuery 选择器让一段简单的 JavaScript 变得更加容易。请注意,这里的所有文本框type="number"都不是type="text",请注意我的输入

在此处输入图像描述

这是我的代码:

$('input[type=number]').each(function(){
    // only if the string is not zero
    if(this.value.charAt(0) == "0" && this.value != "0"){
        this.value = this.value.substring(1);
    }   
});

然而,当我回来完全测试我的表格时,我注意到我的代码不起作用!所以我添加了以下内容以写入控制台以检查发生了什么:

console.log("typeof:" + typeof(this.value) + " " + this.id + " char:" + this.value.charAt(0) + " val:" + this.value )

这给了我以下输出,请注意最后 4 个不具有零值的项目:

在此处输入图像描述

this.value.charAt(0)当用户更改默认值零时,为什么我没有收到?

4

3 回答 3

4

您的值中似乎有空格。在比较之前修剪它(例如使用jquery,或者如果您不想为此包含 jquery ,请参见此处):

$('input[type=number]').each(function(){
    // only if the string is not zero
    var myval = $.trim(this.value);
    this.value = myval.replace(/^[0]+/g,"");

});

上述解决方案删除了​​任意前导零,该部分取自this answer to a similar question

于 2012-08-24T09:03:57.283 回答
3

这可以减少一些:

$('input[type=number]').each(function() {
    this.value = this.value.replace(/^\s*0+(?=\d)/, '');
});

这将删除任何前导零,即使有前导空格(这可能是你的问题)。

于 2012-08-24T09:01:34.283 回答
1

看起来由于某种原因前面有空格 - 在您的零检查之前使用 jQuery 的修剪功能以确保您已经消除了空格。

于 2012-08-24T08:58:48.263 回答