2012-08-02 107 views
0

我想檢查一些單選按鈕以允許用戶點擊一個鏈接(另一方面它應該呼籲allert)。檢查是否所有單選按鈕都被選中

這裏是代碼

<html> 
<head> 
</head> 
<body> 
<a href="http://www.aerosoft.de" id="a_next">aerosoft.de</a> 

      <li class="radiobutton"><span class="name">Struct. Temp. Indic.> 38°C -not exceed 55°C</span> 
      <input name="1" type="radio" value="other" /></li> 
      <li class="radiobutton"><span class="name">Airplane Documents - check </span> 
      <input name="2" type="radio" value="other" /></li> 
      <li class="radiobutton"><span class="name">Flight Control Lock - removed</span> 
      <input name="3" type="radio" value="other" /></li> 
</body> 
</html> 

用戶必須檢查所有3單選按鈕,讓鏈接工作,otherway如果他只是檢查2個單選按鈕,他應該得到一個警告,如果他點擊鏈接。

將是巨大的,如果有人可以幫助:/

電賀 費邊

+3

你爲什麼使用單選按鈕而不是c heckboxes?單選按鈕旨在用於一次只能選擇一個的組中(並單擊一個取消選擇先前選擇的組)。 – nnnnnn 2012-08-02 06:00:58

+0

需要做的:/帶複選框我也做了它...但我需要使用單選按鈕 – 2012-08-02 06:04:39

回答

2

處理鏈接上的點擊事件。循環播放收音機,如果沒有選中,則顯示警報並返回false以取消點擊的默認操作(即取消導航)。

window.onload = function() { 
    document.getElementById("a_next").onclick = function(e) { 
     if (!e) e = window.event; 
     var els = document.getElementsByTagName("input"), 
      i; 
     for (i=0; i < els.length; i++) { 
      if (!els[i].checked) { 
       alert("Your message here."); 
       e.returnValue = false; 
       return false; 
      } 
     } 
    }; 
}; 

演示:http://jsfiddle.net/t9wqc/

+0

完美:)感謝分享和幫助 – 2012-08-02 06:20:04

0

如果你可以使用jQuery,它更清潔..

查看全部example here

<a href="#">aerosoft.de</a> 


var link = "http://www.aerosoft.de" ; 

$('input').change(function(){ 
    var allChecked = $('input:checked').length == 3; 

    if(allChecked){ 
     $('#a_next').attr('href',link).removeClass('disabled'); 
    } 
    else{ 
     $('#a_next').attr('href','#').addClass('disabled'); 
    }    
});​ 
+0

不能得到它的工作:/ 我總是得到一個錯誤 var link =「http://www.aerosoft。 de「id =」a_next「; – 2012-08-02 06:07:08

+1

即使忽略這個問題沒有標記爲「jQuery」的事實,我建議在鏈接上捕獲點擊事件並測試當時的單選按鈕。 – nnnnnn 2012-08-02 06:09:11

+0

@nnnnnn:這就是我的想法。但通過這種方法,他還可以啓用/禁用鏈接,以表明它現在是「可點擊」的。 – 2012-08-02 06:11:15

0

如果你可以使用jQuery,

編輯:(後意見;以前的答案有錯誤)

$(document).ready(function() { 
    $('#a_next').click(function(e){     
     $('input[type="radio"]').each(function(){ 
      if(!$(this).prop('checked')) { 
       alert('Check all radios first'); 
       e.preventDefault(); // to stop anchor jumping to url 
       return false;  // to break .each 
      } 
     }); 
    }); 
}); 

Demo

+0

不適用於我:/ http://jsfiddle.net/5M9nC/1/ – 2012-08-02 06:18:49

+0

需要從click處理程序返回false,而不僅僅是從.each()回電話。 – nnnnnn 2012-08-02 06:23:41

+0

那是因爲''return false'在'.each()'中有不同的含義。讓我糾正 – Jashwant 2012-08-02 06:26:25

相關問題