2017-03-13 18 views
-2

私はテキストフィールドの入力値を特定のフォーマットに従わせたいと思っています。大文字で数字を入力する必要はありません。keyDown()で入力値を書式設定する方法は?

このイベントはonKeydown()で発生します。

例:

Lionel MESSI => Lionel Messi 
LiONEL MesSI => Lionel Messi 

Neymar JR => Neymar Jr 
Neymar 22 JR => Neymar Jr 

Franck D'HONNEUR => Franck D'Honneur 

Kevin PEREZ ROBERTO => Kevin Perez Roberto 
+0

あなたは '力user'とはどういう意味ですか?彼がそれを入力した後にテキストを変更したいですか?彼はそれを入力しながら? – Weedoze

+0

ドキュメントを見る... [String - JavaScript](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/String) – dth

+1

@Steffiは私の助けとなりましたか? – Chris

答えて

2

doiの単純な一行の方法はありませんこれしかし、あなたの名前を書式設定できる関数を作ることができます。もともとthis answerから取ら

、私はそれは少しあなたの所望の出力を反映するように修正しました:

var name1 = "Lionel MESSI"; 
 
var name2 = "LiONEL MesSI"; 
 
var name3 = "Neymar JR"; 
 
var name4 = "Neymar 22 JR"; 
 
var name5 = "Franck D'HONNEUR"; 
 
var name6 = "Kevin PEREZ ROBERTO"; 
 

 
function toTitleCase(str) { 
 
    return str.replace(/\w\S*/g, function(txt){ 
 
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); 
 
    }).replace(/[0-9]/g, ''); 
 
} 
 

 
console.log(toTitleCase(name1)); 
 
console.log(toTitleCase(name2)); 
 
console.log(toTitleCase(name3)); 
 
console.log(toTitleCase(name4)); 
 
console.log(toTitleCase(name5)); 
 
console.log(toTitleCase(name6));

あなたはMDNのドキュメントからtoUpperCase()toLowerCase()をチェックアウトすることができます。


onKeyDown()にこの機能をで取得するには、以下のスニペットのようにjQueryを使用することができます。私はonKeyDown()に対して助言をしますが、これは奇妙なユーザーエクスペリエンスを作り出します。代わりにonBlurを試してください。

function toTitleCase(str) { 
 
    return str.replace(/\w\S*/g, function(txt){ 
 
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); 
 
    }).replace(/[0-9]/g, ''); 
 
} 
 

 
$("#name").on("keydown", function() { 
 
    $(this).val(toTitleCase($(this).val())); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Name: <input id="name">

+0

パーフェクト。どうもありがとうございました – Steffi

0

この質問から少しヘルパー関数の助けを借りて:

$(document).ready(function() { 
    function capitalizeFirstLetterOfEachWord(string) { 
     strArr = string.split(' '); 
     resArr = []; 
     for(i=0;i<strArr.length;i++){ 
      resArr[i] = strArr[i].charAt(0).toUpperCase() + strArr[i].slice(1); 
     } 
     return resArr.join(" "); 
    } 

    $('.forceCapital').blur(function(e) { 
     $(this).val(capitalizeFirstLetterOfEachWord($(this).val())); 
    }); 
}); 

https://jsfiddle.net/sa2ox30d/2/

How do I make the first letter of a string uppercase in JavaScript?

Iは入力ブラーに発射迅速なスクリプトを書きました

+0

これは最初の文字のみを大文字にします。 – Chris

+0

と、なぜCSSを使用しないのですか? – Gayane

+0

@Gayane私の編集を参照してください。 CSSは文字列を解析したり、onBlurイベントをリッスンすることはできません。 – symlink

関連する問題