我有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>
当用户点击无线电时,功能是显示当前隐藏的一些文本字段。用户填写详细信息并移至下一页。当用户再次返回此页面时,如果单击单选按钮,则应显示包含用户输入数据的所有文本字段。现在我的问题是,单选按钮显示为已选中,但当我回到此页面时,不会显示以下文本字段。 似乎用户回来时点击是否被触发。因为一旦我回来,文本字段就不会显示出来。如果再次单击“是”单选按钮,则会显示字段。
有人可以帮助我吗?
答案 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文件中,并在上面的脚本之前添加。