我目前正在使用ASP.Net MVC 1并使用this javascript文件构建一个网站,以便用图像替换默认的单选按钮。我正在使用单选按钮使用jQuery .toggle在两个表单之间切换。
这在Firefox,Chrome,Safari和IE8中完美运行,但在IE7中根本不起作用。但是,如果我使用IE的开发人员工具检查代码并在运行时在onclick方法中添加一个空格,它就可以工作。
我不知道为什么会这样,我尝试了各种jQuery组合,常规javascript,使用return false;因此,许多变化无济于事。
如果有人能放弃任何光线,我们将不胜感激。下面的相关代码。
使用Javascript:
var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
for (a = 0; a < inputs.length; a++) {
if (inputs[a].type == "radio" && inputs[a].className == "styled") {
span[a] = document.createElement("span");
span[a].className = inputs[a].type;
span[a].setAttribute("onclick", inputs[a].getAttributeNode("onclick").nodeValue);
if (inputs[a].checked == true) {
position = "0 -" + (radioHeight * 2) + "px";
span[a].style.backgroundPosition = position;
}
inputs[a].parentNode.insertBefore(span[a], inputs[a]);
inputs[a].onchange = Custom.clear;
if (!inputs[a].getAttribute("disabled")) {
span[a].onmousedown = Custom.pushed;
span[a].onmouseup = Custom.check;
} else {
span[a].className = span[a].className += " disabled";
}
}
}
代码:
<%=Html.RadioButton("rbCustomerSelect", true,Model.IsNewCustomer.GetValueOrDefault(false),new { id="NewCustomerRadioButton", @class="styled", onclick="ShowNewCustomerForm(true);" })%>
呈现为:
<span class="radio" style="background-position: 0px -50px;" onclick="ShowNewCustomerForm(true);"/>
答案 0 :(得分:1)
你说你使用的是jQuery,所以我建议在加载DOM并从radiobutton生成span标记时绑定到click事件。 jQuery的优点在于它试图在不同的javascript实现中保持一致性。
尝试删除onclick参数,并更改javascript,以便为生成的spans提供id。 添加以下行:
span[a].className = inputs[a].type;
span[a].id = inputs[a].id + "-span";
然后在生成范围后使用此javascript绑定到click事件
$(function(){
$("#NewCustomerRadioButton-span").click(function(){ShowNewCustomerForm(true)});
})
也许IE7没有正确地将span注册为DOM元素,但是使用jQuery绑定到click事件应该可以解决这个问题。