onclick for单选按钮jquery

时间:2013-11-26 09:32:17

标签: jquery

我有jsp文件,其中包含html和js函数。现在我试图避免在jsp中编写js。所以我创建了一个单独的js文件,我将脚本从jsp移动到js文件。除了下面的代码,一切正常。

现有代码

<input class="required" type="radio" name="radio" id="radio_yes"  onclick="showDetails();"/>

 <%if(isOwner.equalsIgnoreCase("true")){%>
  <script>
   var a = document.getElementById("radio_yes");
   var evnt = a["onclick"];
   if (typeof(evnt) == "function") {
       evnt.call(a);
   }
 </script>
<%}

<script>
   function showDetails(){//Code 
  }
</script>

以上代码存在于jsp中。我试图将js函数showDetails()移动到一个单独的js文件中,如下所示。还删除了html中的onClick函数。 搬家后

<input class="required" type="radio" name="radio" id="radio_yes"/>

JS文件(test.js)

$(function() {
   $('#radio_yes').click(showDetails);

    function showDetails(){//Code
   }
});

但是当我像这样分开时,我不知道如何在js文件中为单选按钮编写以下脚本。这是一个现有的代码,我不知道为什么我们必须为这样的单选按钮编写onclick。

<script>
   var a = document.getElementById("radio_yes");
   var evnt = a["onclick"];
   if (typeof(evnt) == "function") {
       evnt.call(a);
   }
</script>

当用户点击无线电时,功能是显示当前隐藏的一些文本字段。用户填写详细信息并移至下一页。当用户再次返回此页面时,如果单击单选按钮,则应显示包含用户输入数据的所有文本字段。现在我的问题是,单选按钮显示为已选中,但当我回到此页面时,不会显示以下文本字段。 似乎用户回来时点击是否被触发。因为一旦我回来,文本字段就不会显示出来。如果再次单击“是”单选按钮,则会显示字段。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你可以为此做些什么:

看看您是否重定向到其他页面,当您再次返回此页面并且检查了radio时,您必须进行一些if(){}检查并查看该元素是否已被选中click事件。

$(function(){ //<---------this is document ready
   if($('#radio_yes:checked').length > 0){
       $('#radio_yes').click(showDetails).click(); //<----trigger it on load
   }
   $('#radio_yes').click(showDetails);
});

function showDetails(){// <--move this in global scope
}

更新

<%if(isOwner.equalsIgnoreCase("true")){%>
 <script>
   $(function(){ //<---------this is document ready
     if($('#radio_yes:checked').length > 0){
        $('#radio_yes').click(showDetails).click(); //<----trigger it on load
     }
     $('#radio_yes').click(showDetails);
   });
 </script>
<%}%>

并且可以将showDetails函数移动到单独的js文件中,并在上面的脚本之前添加。