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

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

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

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

jQuery

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

Q&A

解決済

2回答

2115閲覧

jQueryの処理について

a-_.

総合スコア133

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/09/20 02:29

編集2016/09/20 04:16

$('input[name = bbs]').on('click',function(e)から下の処理について処理できない箇所があるので添削していただきたいです


$('input[name = bbs]').on('click',function(e)の箇所は、radioのID属性をpropし、各radioが押される度にsubmitボタンの名前が変化する処理を行いたくて、propしたidをID属性sendに代入してchangeというようにしてみても処理されません
何故でしょうか


$('input[name = chkid[]]').on('click',function()の箇所は、各radioが押された時にtrueかfalseか判別し、trueだったらchkid[]をdisabledするよう処理を行いたくて、変数myidはradioのID属性をpropしたものを定義、sendに変数sendlistと変数myidをvalueに含めて、変数sendlistと変数myidの判別処理をpropしchkid[]に代入するようにしてみても処理されません
何故でしょうか

<script> $(document).ready(function() { $('form').on('submit',function() {//フォーム入力時の条件分岐 if ($('#r1').prop('checked')) { with($('#name')) { if (val().length >= 10) { window.alert("ERROR1"); return false; } if (val() === "") { window.alert("ERROR2"); return false; } } with($('#comment')) { if (val().length >= 300) { window.alert("ERROR3"); return false; } if (val() === "") { window.alert("ERROR4"); return false; } } } if ($('#r2').prop('checked') || $('#r3').prop('checked')) { if ($('[name = "chkid[]"]:checked').length == 0) { window.alert("ERROR5"); return false; } } return true; }); $('input[name = bbs]').on('click',function(e) {//「bbs」が押された時にsebmitボタンの名前が変化 change($('#send').prop('id')); }); $('input[name = chkid[]]').on('click',function() {//「bbs」が押された時にbbsの処理によっては投稿はtrue、更新・削除はfalseでchkid[]がdisabledか否か var myid = $('input[name = bbs]').prop('id') var sendlist = { "r1":{"text":"投稿",checkflg:true}, "r2":{"text":"更新",checkflg:false}, "r3":{"text":"削除",checkflg:false}, }; $('#send').val(sendlist[myid].text); $('[name = "chkid[]"]').prop('disabled',sendlist[myid].checkflg); }); }); </script> </head> <body> <form method="post" action=""> <table> <tr> <td> 名前:<input type="text" name="name" id="name"> 内容:<textarea name="comment" cols="30" rows="3" id="comment"></textarea> <input type="radio" name="bbs" id="r1" value="post">投稿 <input type="radio" name="bbs" id="r2" value="update">更新 <input type="radio" name="bbs" id="r3" value="delete">削除 <input type="submit" id="send"> </td> </tr> </table>

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

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

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

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

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

guest

回答2

0

ベストアンサー

name="bbs"となっているinput要素をクリックした際にchange()という関数を実行するコードになっていますが、
JavaScriptにchangeというメソッドはありませんね。ご自分でそのような関数を定義しているのであれば実行可能ですが、ここでエラーが発生しています。
コンソールは確認されているでしょうか。

jQueryには$('.sample').change()というchangeイベントに関数を関連付けるメソッドはありますが、このメソッド自体に要素の内容を変更させる処理は含まれていません。また、それを使うにはjQueryオブジェクトとつなげて書く必要があります(jQueryオブジェクト内に定義されている関数のため)

javascript

1$('input[name = bbs]').on('click',function(e) {//「bbs」が押された時にsebmitボタンの名前が変化 2 change($('#send').prop('id')); // changeを実行 3});

投稿2016/09/20 08:02

編集2016/09/20 08:04
yamato_hikawa

総合スコア2092

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

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

0

こうですよね?

javascript

1$('input[name = bbs]').click(function() { 2 var myid = $(this).prop('id'); 3 var sendlist = { 4 "r1":{"text":"投稿",checkflg:true}, 5 "r2":{"text":"更新",checkflg:false}, 6 "r3":{"text":"削除",checkflg:false}, 7 }; 8 $('#send').val(sendlist[myid].text); 9}); 10

#省略なし
※load処理のためにchangeイベントに変更しました

HTML

1<script src="jquery.js"></script> 2<script> 3$(document).ready(function() { 4$('form').on('submit',function() {//フォーム入力時の条件分岐 5if ($('#r1').prop('checked')) { 6with($('#name')) { 7if (val().length >= 10) { 8window.alert("ERROR1"); 9return false; 10} 11if (val() === "") { 12window.alert("ERROR2"); 13return false; 14} 15} 16with($('#comment')) { 17if (val().length >= 300) { 18window.alert("ERROR3"); 19return false; 20} 21if (val() === "") { 22window.alert("ERROR4"); 23return false; 24} 25} 26} 27if ($('#r2').prop('checked') || $('#r3').prop('checked')) { 28if ($('[name = "chkid[]"]:checked').length == 0) { 29window.alert("ERROR5"); 30return false; 31} 32} 33return true; 34}); 35$('input[name = bbs]').change(function() { 36 var myid = $(this).prop('id'); 37 var sendlist = { 38 "r1":{"text":"投稿",checkflg:true}, 39 "r2":{"text":"更新",checkflg:false}, 40 "r3":{"text":"削除",checkflg:false}, 41 }; 42 if($(this).prop('checked')==true){ 43 $('#send').val(sendlist[myid].text); 44 $('[name = "chkid[]"]').prop('disabled',sendlist[myid].checkflg); 45 } 46}).change(); 47 48}); 49</script> 50</head> 51<body> 52<form method="post" action=""> 53<table> 54<tr> 55<td> 56名前:<input type="text" name="name" id="name"> 57内容:<textarea name="comment" cols="30" rows="3" id="comment"></textarea> 58<input type="radio" name="bbs" id="r1" value="post" checked>投稿 59<input type="radio" name="bbs" id="r2" value="update">更新 60<input type="radio" name="bbs" id="r3" value="delete">削除 61<input type="submit" id="send"> 62</td> 63</tr> 64</table> 65 66<input type="checkbox" name="chkid[]">test1<br> 67<input type="checkbox" name="chkid[]">test2<br> 68<input type="checkbox" name="chkid[]">test3<br> 69 70

投稿2016/09/20 03:30

編集2016/09/20 06:46
yambejp

総合スコア114574

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

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

a-_.

2016/09/20 04:32

ご回答ありがとうございます 試しに実行しても改善しませんでした 因みにthisはinput[name = bbs]を指してるという解釈でいいんでしょうか
yambejp

2016/09/20 05:08

>因みにthisはinput[name = bbs]を指してる function(){・・・} の中で$(this)をしていすればそのラジオボタン自身になります var myid = $(this).prop('id'); の次の行に console.log(myid); して、状況を確認してください
yambejp

2016/09/20 05:10

ちなみに $('input[name = chkid[]]')は文法違反ですよ、エラー出てますよね? 最低でも $('input[name = "chkid[]"]') としてください
a-_.

2016/09/20 05:31

「'myid' は定義されていません。」と表示されました 当然だとは思うけどこの処理自体が全体的に定義されてないということなんでしょうかね
yambejp

2016/09/20 05:43

念の為・・・ >$('input[name = bbs]').on('click',function(e) { >change($('#send').prop('id')); >}); の部分を書き換えるんですよ?誤解してませんか?
a-_.

2016/09/20 05:46

誤解と言われましても、最初からそこの処理について質問してるんですが
yambejp

2016/09/20 05:57

省略なしバージョンを追記しときました 動きますか?
a-_.

2016/09/20 06:08

省略なしバージョンで改めて実行してみても変化なしでした 因みに以前、下記コードで実行したところ動作していたんですが、myidを変数として定義していないのに処理されたのは何故でしょうか $(function click() { $('input[name = bbs]').on('click',function(e) { change($(this).prop('id')); }); }); function change(myid) { var sendlist = { "r1":{"text":"投稿",checkflg:true}, "r2":{"text":"更新",checkflg:false}, "r3":{"text":"削除",checkflg:false}, }; $('#send').val(sendlist[myid].text); $('[name = "chkid[]"]').prop('disabled',sendlist[myid].checkflg); }
yambejp

2016/09/20 06:48

もしかしてloadの処理の話でした? onloadに反応するためには工夫が必要です。 省略なし版をclick→changeに変更して処理を入れておきました これでどうでしょう? もし動かない場合はブラウザの種類とバージョンを明記してください
a-_.

2016/09/20 06:57

loadではなくreadyでjQuery全体を処理しようかと考えていました 何度も変更していただいてすいませんが改めて実行してみても変化なしでした ブラウザの種類とバージョンはie11です
yambejp

2016/09/20 07:39

正直、私の環境ではどのブラウザでも普通に動いているのでなんとも言えません 提示したとおりにコピペして、jquery.js(またはjquery.min.js)を適正に 組み込めば間違いなく動くはずです。 ただしIEも旧バージョンの互換モードだと動かない可能性がありますが それはjQuery一般の話なので今回は無視します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問