iT邦幫忙

1

[jquery] 確認radio有無選取

各位大大好:
想確認group radio 至少有一個被選取,否則停止送表單,想問哪裡有錯呢Q Q 謝謝
http://jsfiddle.net/gq8e6woh/1/

<form action='r_wrtt.php' method='post' id='f2'>
group1
<input type="radio" value="2" name="pages_title1[]">2
<input type="radio" value="1" name="pages_title1[]">1
group2
<input type="radio" value="2" name="pages_title2[]">2
<input type="radio" value="1" name="pages_title2[]">1
<input type='submit' value='確認送出' />
</form>

jquery

$('#f2').on('submit', (e) => {
var check=true; 
 $('input[type="radio"]').each(function() {
 var ch=$(this).attr("name");
 if($('[name="'+ch+'"]:checked').length==0){
    check = false;
    return false;  
      
});

if (!check){
alert("請勾選完成");
return false
}
else{
alert("OK")
return true
}
});
});

2 個回答

1
dragonH
iT邦大師 7 級 ‧ 2019-06-19 23:23:17
最佳解答

codepen

都用 <form> 了

可以直接用 required

<form action='r_wrtt.php' method='post' id='f2'>
    <input type="radio" value="2" name="pages_title1[]" required>2
    <input type="radio" value="1" name="pages_title1[]" required>1
    <input type="radio" value="2" name="pages_title2[]" required>2
    <input type="radio" value="1" name="pages_title2[]" required>1
    <input type='submit' value='確認送出' />
</form>

你真想知道你的問題的話

你把 check 印出來就知道了

給你點線索

var check = false;

這裡需要改

給你參考

mayyola iT邦新手 2 級 ‧ 2019-06-20 09:38:03 檢舉

修改好了 謝謝d大

0
浩瀚星空
iT邦大師 1 級 ‧ 2019-06-20 09:33:24

看你的程式碼實在是有點搖頭了。

我就不說其它問題了,針對你提的問題回答你就好。

1.不要用 $('input[type="radio"]') 去跑回圈。這樣沒有意義的。

2.如果你的input name都是 pages_title+數字的話。單純點用for處理
跑$("input[name='pages_title'+n]").val()就好。

多教你一招最簡便的處理。這在大量核取時非常好用,且程式碼不用寫太多

<form action='r_wrtt.php' method='post' id='f2'>
group1
<input type="radio" value="" name="pages_title1[]" style="display:none" CHECKED>
<input type="radio" value="2" name="pages_title1[]">2
<input type="radio" value="1" name="pages_title1[]">1
group2
<input type="radio" value="" name="pages_title2[]" style="display:none" CHECKED>
<input type="radio" value="2" name="pages_title2[]">2
<input type="radio" value="1" name="pages_title2[]">1
<input type='submit' value='確認送出' />


<script>
$('#f2').summit(function(){
if($("input[name^='pages_title'][value='']:checked").length > 0){
   alert('未核取!!');
}

});
</script>
</form>

以上,每一個選項多增加一個空值的核取,並將其預設核取。
然後再加上display:none的特性讓這個元件看不到。

然後只要在程式內檢查value=''的被核取數量是否為0就行了。

看更多先前的回應...收起先前的回應...
mayyola iT邦新手 2 級 ‧ 2019-06-20 09:50:47 檢舉

謝謝,這樣也很方便@_@ 不過我的name都會不同..所以我是用以上方法

所以你一定沒注意看我寫的東西。再注意看一下。
提示:我的name的定義是啥?

這算是給你的一個考驗。看你有無在注意人家告訴你的東西。還是只會ctrl+c跟ctrl+v處理。

要不然很多東西都告訴過你了,你到現在還在自已的世界裏。還沒跳拖出來你已認定的思維。

雖然,這算好事有自已的自信算很好的事
但在知識不夠的情況下。這樣算自大跟自我意識太高。
旁人不清楚的話,還會認為你不求進取喔!!

要小心注意看。

Homura iT邦高手 1 級 ‧ 2019-06-20 15:22:25 檢舉

他那麼厲害就不會問這種問題了/images/emoticon/emoticon39.gif

呵呵。好像也對啦。只希望他能有所進步而已。

mayyola iT邦新手 2 級 ‧ 2019-06-21 12:23:50 檢舉

您的程式碼的name應該是寫陣列,不過您說明寫$("input[name='pages_title'+n]").val() 這跟$("input[name='pages_title'+n+'[]']").val()是一樣的嗎? 不過為什麼要用陣列呢,group只要寫一個值(上個發問的問題之一..(有查過Stack Overflow))
我真的只會ctrl+V跟ctrl+C..很羨慕不用查資料就可以一直打程式的人
再麻煩您更正- -..謝謝

我要發表回答

立即登入回答