区别

2011-07-06 45 views
26
<input type="radio" name="group" value="book_folder" onchange="makeRadioButtons()">Create New Book</input> 

<input type="radio" name="group" value="book_chapter" onchange="makeCheckBoxes()">Create New Chapter</input> 

我使用上面的代码,当我点击第二个单选按钮,我想我应该得到两个事件,一个从按钮,进行了泛滥,其他来自检查的按钮,因为从逻辑上讲,两个按钮都改变了状态,并且我已经绑定了onchange()事件而不是onclick()事件。但因为看起来我只从刚刚检查过的按钮 中收到了一个事件。这是在HTML中所需的行为?我如何从按钮中获取事件,如果它没有选中?区别

回答

10

使用该工具来获取所需的行为: -

var ele = document.getElementsByName('group'); 
var i = ele.length; 
for (var j = 0; j < i; j++) { 
    if (ele[j].checked) { //index has to be j. 
     alert('radio '+j+' checked'); 
    } 
    else { 
     alert('radio '+j+' unchecked'); 
    } 
} 

希望它能帮助。

+0

这意味着我从每一个onchange事件中调用这个函数? – samach

+0

即时通讯使用此代码,并以某种方式ele.count()为空! :S – samach

+1

我刚刚发现....如果我使用'ele.length;'它工作正常......并且它告诉单选按钮被选中和未选中...唯一的原因是我们被迫遍历所有组中的按钮。 – samach

7

这两个复选框补单的HTML元素,其名称是group。这就是为什么你在这里只得到一个事件。

Here是演示了如何通过每个单独的复选框的迭代,并访问他们的值的演示例子。

+0

感谢您的答复。但是,如果我将它们分组......他们都可以在同一时间选择..我想一次只选择一个按钮! – samach

+0

@Salman mahmood:看我的编辑。 –

+0

@Salman那么你可能想用jQuery来使用它们的id属性将事件附加到无线电。检查此琴:http://jsfiddle.net/erKURITA/ZYR6N/2/ – erKURITA

0

你可以使用一个变量来保存当前选中的单选按钮的山谷,因此,当事件被触发,你将有旧检查按钮值保存,然后你可以使用,因为在同一时间只有一次,单选按钮会被检查。之后,您可以保存更新的单选按钮选中的值。

4

到浏览器,与一个名称为N单选按钮只是一个控制。因为当它想要将发布数据(或获取数据)发送回服务器时,它仅仅使用name属性作为参数的关键字,以及当前选定的具有该名称属性作为发送参数。这就是为什么你应该将属性命名为一组无线电。所以,onchange不应逻辑上10次发射10次。从浏览器的角度来看,group控件的值从book_folder更改为book_chapter。就这样。

2
$(document).ready(function(){ 
     $("input[name='group']").on(
     { 
      'change' : function() 
        { 
         $.each($("input[name='group']"), 
           function() 
           { 
           var ObjectId, ObjectValue; 

           if($(this).is(':checked')) 
           { 
            /*Checked radio button OBJECT */ 

            console.log(this);      /* Jquery "this" Object */ 
            ObjectId = $(this).attr('id');  /* Id of above Jquery object */ 
            ObjectValue = $(this).val();   /* Value of above Jquery object */ 
           } 
            else 
           { 
            /* UnChecked radio button OBJECT */ 
            console.log(this);      /* Jquery "this" Object */ 
            ObjectId = $(this).attr('id');  /* Id of above Jquery object */ 
            ObjectValue = $(this).val();   /* Value of above Jquery object */ 
           } 
           } 
          ); 
        } 
     } 
    ); 
    });