删除最后一个无效字符,而不是第一个(javascript验证)

问题描述:

我想写一个JavaScript验证方法,以便如果输入多个大写字母,它将在运行中删除其他大写字母。然而,除去第一个大写字母,我希望它删除最后一个(不以x=1存在)删除最后一个无效字符,而不是第一个(javascript验证)

这是我的代码...

for(var x = 1, j = value.length; x < j; x++){ 
    if(value.charAt(x) != newValue.charAt(x)){ 
     valid = false; 
     $("#text_10").attr({ 
      "value":$("#text_10").attr("value").replace(value.charAt(x), "") 
     }); 
     finalVal = finalVal.replace(value.charAt(x), ""); 
    } 
} 

有什么办法识别最后输入的字母,而不反转字符串,以便我可以删除大写字母?

反转您的字符串,然后通过“删除第一个大写字母”代码运行,然后重新将其撤回。

+1

和一个简单的方法来做到这一点是'value.split(“”)。反向()。加入(“”)' –

+0

这是正在上飞完成的,所以我害怕倒车串在飞行中将会有用户交互问题。 – Jason

你可以使用String.replace

var one = false; 
finalValue = value.replace(/([A-Z])/g, function() { 
    if (one) return ''; 
    one = true; 
    return arguments[1]; 
}); 

反向你的循环索引。从value.length开始,然后使用x--而不是x++,直到达到0为止。在此时您不需要j

for (var i = value.length; i > 0; i--) { 
    ... 
} 
+0

不幸的是没有工作,因为我有其他验证,以确保只有一个资本 – Jason