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

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

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

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

jQuery

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

Q&A

解決済

3回答

2494閲覧

jQueryで全角から半角機能をonloadやreadyなしでも実装できるようにしたい。

mobuocity

総合スコア18

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/09/15 22:34

編集2016/09/16 02:10
現在cakePHPでjQueryを使い、全角から半角にする自動変換機能を実装しました。 しかし「onloadは必要ないのではずしてください。」と言われ、外して実装すると動きません。 <?php $this->Html->scriptStart(array('inline' => false));?> $(function(){ $(".test").change(function(){ var str = $(this).val(); str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); }); $(this).val(str); }).change(); }); ```ここに言語を入力 <?php $this->Html->scriptend(); ?> ↑↑↑↑↑が コードです。 外すとなると <?php $this->Html->scriptStart(array('inline' => false));?> $(".test").change(function(){ var str = $(this).val(); str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); }); $(this).val(str); }).change(); <?php $this->Html->scriptend(); ?>

となりますが、これだと動きませんでした。
ここから動かすにはどうやればいいでしょうか?
よろしくお願いします。

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

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

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

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

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

gaogao_9

2016/09/15 22:41

`(バッククォート)の半角を3回打ち込むと、コードが整形されますので、これを使ってコードを整形して頂けると読みやすくなるので助かります。 編集画面で、「</>」と書かれているアイコンを押すことでも挿入することが出来ます。
guest

回答3

0

まずは、

「onloadは必要ないのではずしてください。」

この指摘がどのような意図で行われたのか、それを確認してください。

とはいえ、jQueryはDOMの上で動くので、DOMが構築された状態でないと正しく動きません。.ready()も、必要があって書いているものです。

(いちおう、2つほど回避する方法は考えてみましたが、指摘の意図がわからないのでそれを確認してから追記します)

投稿2016/09/15 22:43

maisumakun

総合スコア145121

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

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

mobuocity

2016/09/15 22:49

自分にもなぜ必要ないのかわかりません・・・聞いておくべきでした。
退会済みユーザー

退会済みユーザー

2016/09/16 03:29

mb_convert_kana を使えっていってるきがしないでもない。(文字列変換)
mobuocity

2016/09/16 04:48

フォーマットから外れた時に自動変換にするということなのでmb_convert_kanaは使えませんでした。あと全角数字を半角数字に変換なのです。 説明不足でした。すみません。
guest

0

ベストアンサー

おそらく.testクラスのオブジェクトを読み込んだあとに
該当部分のスクリプトを書けば良いという意味だと思います
html header部分に書くには未定義のオブジェクトをつかめないので

HTML

1<input type="text" class="test" value="abc"> 2<input type="text" class="test" value="def"> 3<input type="text" class="test" value="ghi"> 4<script src="jquery.js"></script> <!--jQuery読み込み--> 5<script> 6$(".test").change(function(e){$(this).val('123')}).change(); 7</script>

結局window.onload()でオブジェクトがロードされるのを待ってから処理をするのも
htmlの後ろのほうで処理するのも同じです
どっちらがよいかは運用方針次第でしょうね。

また、先に設定を指定しておいてあとから実行する方法もあります

HTML

1<script src="jquery.js"></script> <!--jQuery読み込み--> 2<script> 3//testクラスのchangeを定義 4$(document).on('change','.test',function(e){$(this).val('123')}); 5</script> 6<input type="text" class="test" value="abc"> 7<input type="text" class="test" value="def"> 8<input type="text" class="test" value="ghi"> 9<script> 10//オブジェクトが読まれてからchangeイベントを発生させる 11$('.test').change(); 12</script> 13

投稿2016/09/16 00:50

yambejp

総合スコア114572

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

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

mobuocity

2016/09/16 02:32

解決できました。ありがとうございます。 ただ<script></script>で囲って実行すると実装できるのですが <?php $this->Html->scriptstart(array('inline') => false); ?> <?php $this->Html->scriptEnd(); ?> で囲むと実装できませんでした。 どう違うのかわからないので自分調べてみようと思います。 またもしわからなければteratailで質問すると思いますが、見かけたときはよかったらよろしくお願いします。 今回は助かりました。ありがとうございます。
yambejp

2016/09/16 02:36

吐き出したソースをみてphpがどういったコードを吐いているかみることですね ちょっと特殊な仕様なのかもしれません
guest

0

</body>の直前に<script>を書いたら動きました。 ただ ```ここに言語を入力 <body> <div id="henkan"> <div class="active"><input type="text" id="foo" name="name" value="" />Name</div> <div class="active"><input type="text" id="foo" name="mail" value="" />mail</div> <div class="active"><input type="text" id="foo" name="tel" value="" />tel</div> <div class="active"><input type="text" id="foo" name="address" value="" />address</div> </div> <script> $("#foo").change(function(){ var str = $(this).val(); str = str.replace( /[A-Za-z0-9-!"#$%&'()=<>,.?_\[\]{}@^~\\]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) + 65248); }); $(this).val(str); }).change(); </script> </body> ``` としたのですが、これでもまだload や readyが外れていないと指摘されました。 自分でも少し解決策を探してみてダメならまた投稿してみようと思います。

投稿2016/09/18 15:09

mobuocity

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問