IE7不会调用javascript onclick

时间:2011-01-27 03:16:58

标签: javascript jquery asp.net-mvc internet-explorer-7

我目前正在使用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);"/>

1 个答案:

答案 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事件应该可以解决这个问题。