質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1710閲覧

記入したすべての値を取りたいのですが....

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2015/10/19 07:55

お世話になっております、石井と申します。
今、inputで打ち込まれた文字列をすべてunicodeで出したいのですが、やり方がわかりません。たぶんすごく初歩的なものだと思いますが助けていただければ助かります。
今までの記述です。```html
<input type="text" onKeypress="kanaFunction(event)">

<p id="uniCode"></p> ```

javascript

1function kanaFunction(name){ 2 var x = event.charCode || event.keyCode; 3 var res = String.fromCharCode(x); 4 document.getElementById("uniCode").innerHTML=x+res; 5}

jQueryは使っておりません。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

inputで打ち込まれた文字列をすべてunicodeで出したい

JavaScriptの文字列は全てUnicodeです。
内部的にはUnicodeの表現であるUTF-16(または、UCS-2)で扱われています。
そして出力した時もそれは同じ、つまり、JavaScriptの文字列を表示すること=Unicodeで出力することです。

質問していることは恐らく、文字列の「Unicodeエスケープシーケンス」を出力したい、という事ではないでしょうか?
例えば、「あいうえお」を「\u3042\u3044\u3046\u3048\u304a」のように出力したい、という意味では?
以降では、これが求める解答であると仮定して話を進めます。

まず、String.fromCharCodeは間違いです。
これはUnicode番号の数値から、対応する文字を出力する関数です。

JavaScript

1alert(String.fromCharCode(12354)); 2// 「あ」を出力します。

文字からUnicode番号を出力したい場合、String.prototype.charCodeAtを利用します。

JavaScript

1alert('あ'.charCodeAt(0)); 2// 「12354」を出力します。

文字列を扱えるように関数化すると以下のようになります。

JavaScript

1/** 2 * 文字列に含まれる文字全てをUnicodeエスケープシーケンスに変換する 3 * 4 * @param {string} str 変換する文字列 5 * @return {string} 変換された文字列 6 */ 7function escapeUnicode(str) { 8 /** 9 * Unicodeエスケープシーケンスに変換された出力文字列 10 * @type {string} 11 */ 12 var unicode_escaped_str = ''; 13 /** 14 * 文字のインデックス番号 15 * @type {number} 16 */ 17 var index = 0; 18 /** 19 * 文字に対応するUnicode番号 20 * インデックス番号に対応する位置に文字がない場合、NaNが格納される 21 * @type {number} 22 */ 23 var char_code; 24 /** 25 * Unicode番号の16進数文字列 26 * @type {string} 27 */ 28 var hex_char_code; 29 30 /** 31 * 1文字ずつUnicode番号を取得し、処理を行う。 32 */ 33 while (!Number.isNaN(char_code = str.charCodeAt(index++))) { 34 /** 35 * 文字に対応するUnicode番号を16進数文字列に変換 36 * 4桁になるよう、0埋めも行う 37 * @link http://stabucky.com/wp/archives/4655 38 */ 39 hex_char_code = ('000' + char_code.toString(16)).slice(-4); 40 41 /** 42 * Unicodeエスケープシーケンスを出力文字列に追加 43 */ 44 unicode_escaped_str += '\\u' + hex_char_code; 45 } 46 47 return unicode_escaped_str; 48}

これを利用して、以下のようにすることで目的のコードが実現できます。
escapeUnicode関数は既に定義済みであるものとします。

HTML

1<input type="text" id="input"> 2<p id="output"></p>

JavaScript

1/** 2 * 要素にテキストを設定する。textContentプロパティのクロスブラウザ関数 3 * @param {Node} targetNode 設定対象の要素 4 * @param {string} text 設定するテキスト 5 */ 6var setText = 7 ('textContent' in document.documentElement) ? 8 function (targetNode, text) { 9 /** 10 * 対象要素のtextContentプロパティに新しいテキストを代入 11 */ 12 targetNode.textContent = text; 13 } : 14 function (targetNode, text) { 15 /** 16 * 対象要素内の全子要素を削除 17 */ 18 var childNode; 19 while ((childNode = targetNode.firstChild)) { 20 targetNode.removeChild(childNode); 21 } 22 /** 23 * テキストノードを挿入 24 */ 25 targetNode.appendChild( 26 targetNode.ownerDocument.createTextNode(text) 27 ); 28 } 29; 30 31function inputListener(e) { 32 var inputElem = e.target; 33 setText( 34 document.getElementById('output'), 35 escapeUnicode(inputElem.value) 36 ); 37} 38 39document.getElementById('input').addEventListener('input', inputListener, false);

サンプル

ちなみにしれっと使っていますが、DOM要素に文字列を設定する場合はinnerHTMLではなくtextContentを利用してください。
このコードではtextContentに対応していないブラウザのため、setText関数を定義しています。
innerHTMLは処理が重い問題もあるため、可能な限り利用しないようにしましょう。

また、input要素の入力値はvalueで取得できます。
charCodeまたはkeyCodeは押されたキーボードのキーの番号を返すもので、これはキーボード操作をJavaScriptで実現する時などに利用します。

さらに、文字列が入力された時に処理を行う場合はkeydownイベントやkeypressイベントではなく、inputイベントを利用してください。
右クリックメニューでコピー&ペーストされた場合、keydownイベントやkeypressイベントでは処理されません。
このinputイベントは古いブラウザには対応していないため、目的の環境で動作しない等の問題がありましたらお知らせください。

投稿2015/10/19 10:34

編集2015/10/20 08:31
sounisi5011

総合スコア697

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/10/20 03:32

sounisi5011さん、ありがとうございます!解決いたしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問