当按下另一个单选按钮时,为什么我的单选按钮事件会触发?

时间:2016-05-25 12:54:22

标签: javascript jquery html

我使用以下代码显示“pers”并隐藏“bus”,反之亦然

JQuery的:

 $('input[name="perorbus"]').click(function() {
             if ($(this).attr('id') == 'bus') {
                $('#showbus').show();
                $('#showper').hide();
             }
             if ($(this).attr('id') == 'pers') {
                 $('#showper').show(); 
                 $('#showbus').hide();               
             } 

         }); 

HTML:

 <fieldset id="perorbus">
      <label style="font-size: large;">Personal Or Business?</label>
      <br/>
    <input type="radio" class="PerOrBus" value="pers" id="pers" name="perorbus"/>
    <label style="font-size: medium;">Personal Customer</label>
    <input type="radio" class="PerOrBus" id="bus" value="bus" name="perorbus"/>
    <label style="font-size: medium;">Business Customer?</label>
      <br/>
  </fieldset> 


<table id="showper">
    <tr>
    <td>Show Personal</td>
    </table>

    <table id="showbus">
    <tr>
    <td>Show Business</td>
    </table>

我在页面上放置的任何其他单选按钮都会触发此按钮。它们都被赋予了如下名称属性:

<fieldset id="CACCc">
   <input type="radio" id="1b" class="2b" value="4b" name="1b"/> Yes 
   <br/> 
   <input type="radio" id="id12" class="4class" value="4c" name="id12"/> No ​ 
   <br/></fieldset>

但是,我必须使用jquery在doc ready上分配名称,如下所示:

     document.getElementById("1b").setAttribute('name', '1b');
     document.getElementById("id12").setAttribute('name', 'id12');  

这是因为我仅限于在HTML(长篇故事)中使用名称属性

任何帮助都会很棒,谢谢

2 个答案:

答案 0 :(得分:0)

尝试通过单选按钮然后单击单选按钮的名称。还可以使用更改触发器。顺便说一句,您的fieldset具有相同的名称。这可能是一个问题。

$(document).ready(function() {
    // Update names
    $('input[type=radio][name=perorbus]').change(function() {
         if (this.id == 'bus') {
            $('#showbus').show();
            $('#showper').hide();
         }
         if (this.id == 'pers') {
             $('#showper').show(); 
             $('#showbus').hide();               
         } 
    });
});

答案 1 :(得分:0)

我的问题的答案具体是这是一个Sharepoint缓存问题。因为我无权删除缓存,所以我只是重命名并重新识别所有内容并使其正常工作。

这可能无法解决其他人的问题,但其他答案应该是。