2011-01-24 5 views
0

onkeydown()という関数を作成しようとしていますが、テキスト入力フィールドにすべての文字をカンマ( "、")の後に大文字にする必要があります。Javascript関数:カンマの後ろにキャップ

私はこの機能を使用して文字資本のすべてを作ることができることを知っている:

function makeUppercase(field) { 
    field.value = field.value.toUpperCase(); 
} 

しかし、コンマが存在した後にのみ、この機能を実行するために言う方法がわからないです。

答えて

0

私はそれを行うための一つの方法は、テストを行うことであろうとします

if (field.value.indexOf(',') == -1) // comma doesn't exist in the string 
{ 
    // add the character 
} 
else 
{ 
    // add the uppercase version of the character. 
} 
2

正規表現は、そのようなもののために良いです。何かのように

function makeUpperCaseAfterCommas(str) { 
    return str.replace(/,\s*([a-z])/g, function(d,e) { return ", "+e.toUpperCase() }); 
} 
+0

この機能をトリガするにはどうすればよいでしょうか? – Mike

+0

実際にはそれよりもトリッキーです。単にonkeydown = "this.value = makeUpperCaseAfterCommas(this.value)"のようなことをした場合、それは "うまくいく"でしょうが、入力フィールドのすべてのキーストローク後にあなたのキャラットの位置が失われる可能性があります。その部分を処理するのはより複雑ですが、http://parentnode.org/javascript/working-with-the-cursor-position/は、アプローチの考え方を示す必要があります。 – Metal

+0

この関数はカンマの後の最初の文字を大文字にします。カンマの後にすべてを大文字にする必要があります。助言がありますか? – Mike

0

コンマで区切られていても、コンマで区切られているかどうかをテストできます。新しい配列の最初のインデックスの後にあるものは、toUppercaseをカンマで再結合し、入力フィールドを改訂された文字列に置き換えます。

function makeUppercase(field) { 

    if(filed.value.indexOf(",") != -1) 
    { 
     var inputStr = field.value.split(","); 
     for(var i = 1; i < inputStr.length; i++) 
     { 
      inputStr[i] = inputStr[i].toUpperCase(); 
     } 
     field.value = inputStr.join(","); 
    } 
} 
関連する問題