2011-09-13 11 views
2

複数の大文字を入力した場合、大文字を即座に削除するようにJavaScriptの検証メソッドを作成しようとしています。しかし、これは私のコードである、それは最初の大文字を削除して、そして私はそれが(x=1に存在しない)最後の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

文字列を逆順にして、「最初の大文字を削除する」コードを実行してから元に戻します。

+1

とそれを行うための簡単な方法は、 'value.split(「」)である。逆に()。参加(「」)' –

+0

これは、オンザフライで行われているので、私は、文字列を逆に怖いですオンザフライでユーザーインタラクションの問題が発生します。 – Jason

0

あなたはString.replaceを使用することができます。

var one = false; 
finalValue = value.replace(/([A-Z])/g, function() { 
    if (one) return ''; 
    one = true; 
    return arguments[1]; 
}); 
0
あなたのループインデックスをリバース

value.lengthで始まり、0に達するまで、ではなくx--を使用して戻ります。その時点でjは必要ありません。

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

は残念ながらうまくいきません。資本が1つしかないことを確認するための他の検証があるので – Jason

関連する問題