2012-08-02 124 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

相关问题