javascriptで。


htmlのinputに入力された内容が、日本語か英語か判別するにはどうすれば良いでしょうか?

※入力された内容の先頭で判断したいと思っています。
「take off」 → 英語
「テイクオフ」 → 日本語
「takeオフ」 → 英語

※送信先のCGIには手を加えないとします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/04/11 12:31:28
  • 終了:2008/04/18 12:35:02

回答(2件)

id:tukihatu No.1

牛乳先生(tukihatu)回答回数180ベストアンサー獲得回数322008/04/11 12:54:18

ポイント35pt

javascriptでやるなら、フォーム送信の前に一度かませる必要があります。

先頭を判別するならsubstr(0.1)もしくは正規表現の先頭から判別を使います。

英語かどうかを判定するのは正規表現を使います。

簡単に組み合わせるとこうなります。

<script>
function submitcheck(){
    strcheck("input01");
}

function strcheck(inputid){
    var sid = document.getElementById(inputid);
    if(sid.match(/^[a-z]/i)){alert("英語!");document.getElementById("formname").submit();}
    else{alert("日本語!");}
}

</script>
</head><body>
<form id="formname" action="~.cgi">
<input type="text" id="input01" />
<input type="button" onclick="submitcheck();" />
</form>

即興で書いたから動作確認はしてませんが、流れはこんな感じです。

matchの部分を変更すると、英数字も対応できたりいろいろできます。

http://www.tohoho-web.com/js/regexp.htm

id:Numeric No.2

Numeric回答回数83ベストアンサー獲得回数182008/04/11 13:28:27

ポイント35pt

先頭の文字がアルファベットかどうかを判断する関数を使ったサンプルコードを示します。

空のときも日本語と判断される(英語ではないため)ので、注意が必要です。

<script type='text/javascript'>
function isAlphabet(str){
	var exp = /^[a-zA-Z]/;
	if(str.charAt(0).match(exp)){
		return true;
	}else{
		return false;
	}
}

// sample
function sampleFunction(text){
	document.write("「" + text + "」 → " + (isAlphabet(text) ? "英語" : "日本語") + "<br/>");
}

sampleFunction("take off");
sampleFunction("テイクオフ");
sampleFunction("takeオフ");
</script>

URLはダミーです。

http://q.hatena.ne.jp/answer

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません