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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

3513閲覧

jqueryでtextareaのタグ名の取得方法

K.T_build

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2016/07/08 07:03

編集2016/07/09 00:40

入力画面で入力中にブラウザバックができないように画面を制御しています。
その際、テキストエリアの場合もバックスペースが効かなくなりました。
※ $(":focus").attr("type") がundefinedになり、条件に引っかかる

タグ名を取得して、textareaタグであることを判定する処理を記述したいのですが、
どうすればタグ名を取得できるかがわかりません。

以上、よろしくお願い致します。

html

1<td class="input-cell"> 2 <?php echo $this->Form->input("Hoge.memo", array( 3 'id' => 'memo', 4 'type' => 'textArea', 5 'class' => 'memo', 6 'label' => false, 7 'div' => false, 8));?> 9</td>

jquery

1$(document).keydown(function(event){ 2 // クリックされたキーコードを取得する 3 var keyCode = event.keyCode; 4 5 // F5 の場合は falseをリターン 6 if(keyCode == 116) { 7 //console.log("F5"); 8 return false; 9 } 10 11 // バックスペースキーを制御する 12 if(keyCode == 8){ 13 if($(":focus").attr("type") != 'text'){ 14 //テキスト要素なら、バックスペースを許可 15 console.log("Backspace"); 16 console.log($(":focus").attr("type")); 17 console.log($(":focus").eq(0).tagName); 18 return false; 19 } 20 } 21}); 22

【追記】
masaya_ohasiさんのご指摘いただき、処理方法を変える事にしました。
ただ、後学のために今回の取得方法も教えていただければ幸いです。
身勝手ではありますが、お願い致します。

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

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

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

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

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

guest

回答4

0

.tagName ですね

投稿2016/07/08 07:12

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

K.T_build

2016/07/09 00:41

すいません、言い忘れておりました。 .tagName や nodeNameも試したのですが、undefinedで取得できませんでした。
guest

0

ベストアンサー

バックやリロードを防ぐなら、こちらのほうが適切かと思います。

javascript

1function unloadBlock(e) { 2 return "変更を破棄します。よろしいですか?"; 3} 4$(window).on("beforeunload", unloadBlock);

こうしておけば、ダイアログで「変更を破棄します。よろしいですか?」と聞いて、ダイアログのOKを押せばリロード、バックが続行され、キャンセルを押せばリロード、バックがキャンセルされます。その代わり、formのsubmitによるページ移動時もブロックされるので、その場合はsubmitのイベントの処理の中で以下のように解除してやる必要があります。

Javascript

1$(window).off("beforeunload", unloadBlock);

ガードをon、offするタイミングはご自分で考慮してください。

投稿2016/07/08 07:12

masaya_ohashi

総合スコア9206

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

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

K.T_build

2016/07/09 00:40 編集

なるほど、こんな方法があるのですね。 試してみて、パンくずなどの他リンクへの対処も簡単にできるんで、こちらに差し替えることにしました。 ありがとうございます。
guest

0

javascript

1var tag = event.target.nodeName.toLowerCase(); 2tag !== 'textarea'

等使ってます
あちゃーkei344さんの見逃しました
...
あれ?ちょっと違う

投稿2016/07/10 13:51

編集2016/07/10 13:56
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/07/10 14:00

なるほどー ありがとうございます
guest

0

noricyan2さんの書かれたようにtagNameで取得できますよ。

JavaScript

1$( document ).keydown( function( event ) { 2 // クリックされたキーコードを取得する 3 var keyCode = event.keyCode; 4 5 // F5 の場合は falseをリターン 6 if(keyCode == 116) { 7 return false; 8 } 9 10 // バックスペースキーを制御する 11 var tagName = event.target.tagName.toLowerCase(); 12 if ( keyCode === 8 13 && tagName !== 'textarea' // テキスト要素なら、バックスペースを許可 14// && tagName !== 'input' // <input type="text"> のみに絞って許可を出す。(未実装) 15 ) { 16 console.log( 'Backspace' ); 17 return false; 18 } 19} );

動くサンプル:https://jsfiddle.net/fh9faj9g/

投稿2016/07/10 12:59

kei344

総合スコア69364

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

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

K.T_build

2016/07/13 08:39

なるほど! フォーカスされているものによって処理を変えるために $(":focus") を使ってましたが event.target でもフォーカス先の情報が取得できるのですね。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問