这可能是一个愚蠢的问题或错字但我还是要问...我有以下表格,当提交表格时我想检查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)
?
答案 0 :(得分:4)
您的价值似乎有空格。在比较之前对其进行修剪(例如,使用jquery或see here,如果您不想仅为此包含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。
答案 1 :(得分:3)
这可以减少一些:
$('input[type=number]').each(function() {
this.value = this.value.replace(/^\s*0+(?=\d)/, '');
});
这将删除任何前导零,即使有前导空格(这可能是你的问题)。
答案 2 :(得分:1)
看起来由于某种原因存在前面的空格 - 在零检查之前使用jQuery的trim函数来确保你已经消除了空格。