初心者で、javascriptでラジオボタンが選択されないときはalertを出さず、すでに選択されている場合で、違うボタンに変更するときにはalertを出すにはどう書けばよいか教えて頂けますでしょうか。
下記は書いてみたコードです。
<script>
var goods1=document.getElementById("goods1");
var goods2=document.getElementById("goods2");
var goods3=document.getElementById("goods3");
function janid(){
if (goods1.value=="" && goods2.value=="" && goods3.value==""){
return false;
}else {
alert("商品の種類を変更しました");
}
}
</script>
<table>
<td><label>
<input type="radio" id="goods1" name="goods1" value="1" onClick="return goods()">
<span>商品1</span></label>
<label>
<input type="radio" id="goods2" name="goods2" value="2" onClick="return goods()">
<span>商品2</span></label>
<label>
<input type="radio" id="goods3" name="goods3" value="3" onClick="return goods()">
<span>商品3</span></label>
</td>
</table>
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
<script>
window.addEventListener('DOMContentLoaded', ev => {
_ var form = document.getElementById('abcde'), items = form.elements['g'], i, v = '';
_ for (i = 0; i < items.length; i++) if (items[i].checked) v = items[i].value;
_ form.dataset.prevG = v; // 変更前の値を form に覚えさせる
_ form.addEventListener('change', event => {
_ _ var t = event.target, f = t.form; if (t.name != 'g' || !t.checked) return;
_ _ var v = f.dataset.prevG;
_ _ if (v && v != t.value) alert('change!'); // 変更前の値があり、変更前後で異なるなら alert
_ _ f.dataset.prevG = t.value; // 次回のために、変更前の値を更新
_ }, false);
}, false);
</script>
<form id=abcde> radio は form 配下でなければ意味が無い
<input type=radio name=g value=1>item1
<input type=radio name=g value=2>item2
<input type=radio name=g value=3>item3
</form>
ご回答、ありがとうございました。
下記のように書きましたらできました。
<script>
var goods1=document.getElementById("goods1");
var goods2=document.getElementById("goods2");
var goods3=document.getElementById("goods3");
function janid(){
if (goods1.checked || goods2.checked || goods3.checked){
return false;
}else {
alert("商品の種類を変更しました");
}
}
</script>
No.2
- 回答日時:
書かれているスクリプトを実際に動かすとどうなりましたか?
それが分かっていないのだとご自身の理解を進めるための出発点に立っていないことになります。
で。
> var goods1=document.getElementById("goods1");
> var goods2=document.getElementById("goods2");
> var goods3=document.getElementById("goods3");
これは何のためにあって、どのタイミングで各変数に値がセットされるでしょう?
そして初期値には何が入り、その後何のタイミングでどういう値が入るでしょう?
書かれたjavascript関数では初期値としてnullストリングを期待しているようですが。。。
> <input type="radio" id="goods1" name="goods1" value="1" onClick="return goods()">
> <span>商品1</span></label>
> <label>
> <input type="radio" id="goods2" name="goods2" value="2" onClick="return goods()">
> <span>商品2</span></label>
> <label>
> <input type="radio" id="goods3" name="goods3" value="3" onClick="return goods()">
> <span>商品3</span></label>
ラジオボタンのnameを全て変えるのはなぜでしょう?
そうした場合、HTMLとして期待する仕様でラジオボタンの選択が出来ますか? onClickの無いHTMLだけの画面で確認されていますか?
ちなみにラジオボタンの選択が変更された時にアラートを出したいのですから、拾わねばならないイベントはClickではなくChangeではないでしょうか?
つまりonChange。。。
で。onClickにしろ、onChangeにしろ、javascript関数が呼ばれた時は既にラジオボタンが選択された後ですから、最初はどれも選択されていない状態の画面が表示されるのでしたら、必要なのは「初回のクリックなのか、2回目以降のクリックなのかを見分けるための変数」のはずです。その変数がある初期値を持っていて、ラジオボタンのいずれかがクリックされるとそれとは異なる値がセットされる。クリックされるたびに同じ値がセットされるのでもよいと思います。
参考まで。
ご回答、ありがとうございました。
下記のように書きましたらできました。
<script>
var goods1=document.getElementById("goods1");
var goods2=document.getElementById("goods2");
var goods3=document.getElementById("goods3");
function janid(){
if (goods1.checked || goods2.checked || goods3.checked){
return false;
}else {
alert("商品の種類を変更しました");
}
}
</script>
No.1
- 回答日時:
ラジオボタンなんだから同じnameつかわないと
こんな感じでどうでしょ?
<script>
var pre_s=-1;
function goods(obj){
var f=obj.form;
var n=obj.name;
var s=null;
for(var i=0;i<f.elements[n].length;i++){
if(f.elements[n][i].checked){
s=i;
}
}
if(pre_s>=0 && pre_s!=s){
alert("change!");
}
pre_s=s;
}
</script>
<form>
<table>
<td><label>
<input type="radio" id="goods1" name="goodsx" value="1" onclick="return goods(this)">
<span>goods1</span></label>
<label>
<input type="radio" id="goods2" name="goodsx" value="2" onclick="return goods(this)">
<span>goods2</span></label>
<label>
<input type="radio" id="goods3" name="goodsx" value="3" onclick="return goods(this)">
<span>goods3</span></label>
</td>
</table>
</form>
ご回答、ありがとうございました。
下記のように書きましたらできました。
<script>
var goods1=document.getElementById("goods1");
var goods2=document.getElementById("goods2");
var goods3=document.getElementById("goods3");
function janid(){
if (goods1.checked || goods2.checked || goods3.checked){
return false;
}else {
alert("商品の種類を変更しました");
}
}
</script>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンの分岐方法に関して
-
フォームPOST後「戻る」時のチ...
-
ラジオボタンにタブインデック...
-
ラジオボタンのValueを受け取り...
-
JavaScriptで小数点も含めた複...
-
js radioボタンの「name」を多...
-
EXCEL VBA:IEの操作であるラジ...
-
Jvasvriptのlengthで個数が取得...
-
ジャバスクリプト機能の繰り返...
-
ラジオボタンでチェックした項...
-
データベースの値を判断してラ...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
onchangeイベントを強制的に発...
-
value内に変数を入れたい
-
プルダウン選択を変更すると、...
-
【jQuery】input nameの文字列...
-
新しくフォルダを作成したい
-
Javascriptでのbuttonのname属...
-
CSVファイルを読みこみ、プルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンのチェックが外れ...
-
javascript作成してます。ラジ...
-
ラジオボタンにタブインデック...
-
Jvasvriptのlengthで個数が取得...
-
ホームページ作成について。
-
データベースの値を判断してラ...
-
フォームPOST後「戻る」時のチ...
-
ラジオボタンでdisabledとchecked
-
Form内のselectを連動させるに...
-
アンダーバーのname値は取得で...
-
チェックされたラジオボタンに...
-
jQueryで複数のラジオボタンを処理
-
ラジオボタンのリセット方法
-
ラジオボタンの分岐方法に関して
-
javascriptによる動的なリンク...
-
radio選択をクッキーに保存させ...
-
JavaScriptでラジオボタンのチ...
-
jQuery 変数の使い方について
-
チェックボックスのON/OFFに連...
-
ラジオボタンでチェックした項...
おすすめ情報
下記のように変更しましたが、起動しませんでした。
<script>
var goods1=document.getElementById("goods1");
var goods2=document.getElementById("goods2");
var goods3=document.getElementById("goods3");
function janid(){
if (goods1.value=="" && goods2.value=="" && goods3.value==""){
return false;
}else if (goods1.value==0 || goods2.value==1 || goods3.value==2){
alert("商品の種類を変更しました");
}
}
</script>