2013-11-26 73 views
0

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

现有代码

<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> 

功能是,当用户点击收音机时,会显示一些当前隐藏的文本字段。用户填写详细信息并转到下一页。当用户再次回到这个页面时,如果点击单选按钮,它应该显示所有带有用户输入数据的文本字段。现在我的问题是,单选按钮显示为选中状态,但当我回到此页面时,下面的文本字段不会显示。 似乎点击是在用户返回时触发的。因为一旦我回来的文本字段不显示。如果再次单击yes单选按钮,则会显示字段。

有人可以帮我吗?

+0

我认为你需要使用像'$('#radio_yes')触发器'trigger('click')' – Satpal

+0

@ Satpal ..感谢您的回复。所以我应该从jsp中删除avove代码并在js文件中写入$('#radio_yes')。trigger('click') – user1049057

+0

是的,您需要这样做 – Satpal

回答

0

你可以做什么了这一点:

看到,如果你重定向到其他网页,当你回到这个页面再次,如果你radio被选中,那么你必须做一些if(){}检查,看看是否有ELEM被检查火灾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> 
<%}%> 

,你可以在一个单独的js文件移动你的showDetails功能和上面的脚本之前添加。

+0

@ Jai ..感谢您的答复。这是做什么的? $( '#radio_yes')点击(showDetails)。点击();此外,我不能这样做的页面加载因为这个单选按钮不会总是被检查。只有这样的话,它应该显示下面的字段..我有更新的dmy问题..你可以检查, – user1049057

+0

好吧..我已经更新了qn ..让我知道如果你需要澄清这个...它检查一个条件,如果它是真的,那么必须执行收音机上的点击事件。 – user1049057

+0

@ user1049057看到更新可能是这可能有所帮助。 – Jai