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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

jQuery

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

Q&A

解決済

2回答

4520閲覧

textareaの入力データをvalidationする前にtrimするためjsを修正したい

spring

総合スコア48

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/02/05 02:56

編集2016/02/05 03:11

修正するページに関してタブによってその趣旨に沿ったtextareaが計4つあり投稿出来るようになっています。
このtextareaはjspで部品化しており同ページからincludeで呼び出しています。
また、このtextareaはバリデーションにて○○文字以上入力する制限になっています。
そしてこのバリデーションはtextareaのフォーカスが外れた時(input.blur)○○文字以上入力していないとtextareaの下にエラーメッセージが出るよう動いています。
要件はtextareaの入力データをバリデーションが掛かる前に「jQuery.trim()」し前後の空白文字を取る事です。

jsファイルにて画面ロード時にsetupなるメソッドがありその中でフォーカスが外れる度バリデーションが掛かるよう設定している箇所がある事分かりました。

function setup(input, ○, ×) {
~~~~~~~~~~~~~
~~~~~~~~~~~~~
input.blur(validate);
~~~~~~~~~~~~~
~~~~~~~~~~~~~
~~~~~~~~~~~~~
~~~~~~~~~~~~~
}

修正として上記「input.blur(validate);」の一つ上に同じくblurを使いtrimメソッドを作成しました。

function textTrim(){
params = $('textarea').val();
params = jQuery.trim(params);
$('textarea').val(params);
}

function setup(input, ○, ×) {
~~~~~~~~~~~~~
~~~~~~~~~~~~~
input.blur(textTrim);
input.blur(validate);
~~~~~~~~~~~~~
~~~~~~~~~~~~~
~~~~~~~~~~~~~
~~~~~~~~~~~~~
}

上記の修正でhtmlコード上一番上のtextareaは正常に動作しますが、
その他下のtextareaは「$('textarea').val(params);」をやっているので入力文字が入ってしまいます。
部品化しているのでclassの修正等も出来ず何か良い方法はありますでしょうか?
また、訳あってこのコード修正を綺麗に書かなければとんでもない仕打ちが待っている為どうかお助け下さい。

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

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

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

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

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

guest

回答2

0

ベストアンサー

javascript

1function textTrim(){ 2 params = $('textarea').val(); 3 params = jQuery.trim(params); 4 $('textarea').val(params); 5}

↑を↓に。

javascript

1function textTrim(){ 2 params = $(this).val(); 3 params = jQuery.trim(params); 4 $(this).val(params); 5}

個人的に$jQueryを混在させてるのがすごい気持ちが悪いんですが、その辺、コードレビューでなんか言われないんですかね。

投稿2016/02/05 03:42

Lhankor_Mhy

総合スコア36074

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

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

spring

2016/02/05 05:54 編集

ご回答ありがとうございます。 アドバイス頂いた通り下記にすることにより出来ました。 function textTrim(){ params = $(this).val(); params = jQuery.trim(params); $(this).val(params); } function setup(input, ○, ×) { ~~~~~~~~~~~~~ ~~~~~~~~~~~~~ input.blur(textTrim); input.blur(validate); ~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~ } 素人事ですみません、上記は"textarea"からthisに変える事により押されたtextareaのみに処理が動くようになったとの認識で合っていますか? レビューでなんか言われると思うので$とjQueryの混在も整えたいです。
Lhankor_Mhy

2016/02/06 05:56

> 上記は"textarea"からthisに変える事により押されたtextareaのみに処理が動くようになったとの認識で合っていますか? 概ねその通りですが、実はtextarea以外にも動作しますのでお気を付けください。 > レビューでなんか言われると思うので$とjQueryの混在も整えたいです。 $とjQueryを入れ替えるだけなので、どちらかに統一すればいいと思います。会社のコード規則に従えばいいと思いますが、よくわからなければ、周辺のコードと合わせてください。
guest

0

html

1設定個所4個所、各 validate なるメソッドを blur イベントに登録。validate はメソッドとしてどっかに定義されてる。 2function trimAbdValidate1(){ 3 // trim 処理 4 5 validate(); 6} 7 8 9既存の、input.blur(validate); 1011input.blur(trimAndValidate1); 12にして終わりです。 131 14と番号つけたのは、テキストエリア4つそれぞれ用のメソッドということで。

なんか、前回、きょうが期限日でづ、ってー書いてから10日以上経過してるんですが、比較的時間に余裕があって良かったでづね。

追記

html

1 2 3function trimValidate(e) { 4 var v = this.value.replace(/^[ ]+/, "").replace(/[ ]+$/, ""); 5 this.value = v; 6 validate.apply(this, [e]); 7} 8[ と ]の間に、半角スペースと全角スペースを入れてください。 9ふと思ったですが、テキストエリアなので複数行記述できるのでは? 10前後のスペースで良いのですか?各行の前後スペースだともうちょっとややこしくなるかと。 11 12 13追記内容、 14jquery でイベント登録されることが提示ソースから見えなかったため 15

投稿2016/02/05 03:11

編集2016/02/05 04:44
ipadcaron

総合スコア1693

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

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

spring

2016/02/05 03:46

前回に引き続きお助け頂きありがとうございます! その他の優先作業がいっぱい入ってきたので何んとか期限が伸びました。 教えていたいた記載通りに実行しました! (メソッドの部分「trimAbdValidate1」は「trimAndValidate1」に変えました) その結果下記エラーが吐かれました。 同jsにてhideerrorなるメソッドがありここで下記文言が吐かれてる。 Uncaught TypeError: Cannot read property '$バリデータコンテキストと書かれた変数' of undefined もう少し調査してみます!
ipadcaron

2016/02/05 04:46

私のていあんは無視して、Lhankor_Mhy さんのを使ってください。
spring

2016/02/05 05:52

ありがとうございます。 私の掲示した情報が少なかったですね、失礼しました。 前回の板で質問させて頂いた際調査していて、本jsの中に他の箇所でjQuery.trim()している所がありreplaceではなくこれを使う事になりました。 http://semooh.jp/jquery/api/utilities/jQuery.trim/str/ 入力情報の文字列内にあるスペースは適応されませんが文字列の前後スペースを取ってくれるのでこれで対応して行くことになりました。 長い間お付き合いいただきありがとうございます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問