JavaScript适用于IE,但不适用于Firefox

时间:2012-06-21 13:42:58

标签: javascript .net firefox visibility

在我的.NET项目中,我在HTML页面中使用了一个带有隐藏<div>的按钮。 <div>包含插入公司的表单。

HTML:

<div class="top-div-where-is-my-ADD-button">
    <h2>
        Search:
        <input type="text" id="search" />
        <div id="divADD" onclick="AddCompany()">
            <span>Add Company</span></div>
    </h2>
</div>

    <div id="hide" style="visibility: hidden; height: 0px; padding-bottom: 10px;">
    <table id="CompanyDetails" class="company" style="width: 100%; text-align: center;">
.........
</div>

JavaScript的:

function AddCompany() {
    HideCompany();
    $(hide).css({ visibility: "visible", height: "auto" });
    var a = document.getElementById("divbuttonSaveCompany");
    a.onclick = InsertCompany; 
}

function InsertCompany() {
    var a = document.getElementById("Name").value;
    var b = document.getElementById("Address").value;
    var c = document.getElementById("Country").value;
    var d = document.getElementById("Phone").value;
    var e = document.getElementById("Fax").value;
    var f = document.getElementById("Email").value;
    var gg = document.getElementById("Contact");
    var g = gg.options[gg.selectedIndex].value;
    $.ajax({
        url: '@Url.Action("AddCompany", "Company")',
        data: { nameCompany: a, address: b, country: c, phone: d, fax: e, email: f , contact: g},
        dataType: "html",
        type: "POST",
        error: function () {
            alert("error");
        },
        success: function (data) {
            alert("Company was successfully added! ");
            $("#all").html(data);
        }
    });
}
function HideCompany() {
    $(hide).css({ visibility: "hidden", height: "0" });
    $("#Name").val("");
    $("#Address").val("");
    $("#Country").val("");
    $("#Phone").val("");
    $("#Fax").val("");
    $("#Email").val("");
}

所以基本上在IE中,当我按下AddCompany按钮时会出现隐藏的<div>,但在FF中却没有。

有谁知道我需要做些什么来解决这个问题?

3 个答案:

答案 0 :(得分:3)

问题在于:

$(hide)

这适用于IE,因为IE从具有“id”的每个元素创建一个全局变量。 Firefox不会这样做。

将对$(hide)的所有引用更改为$('#hide')

答案 1 :(得分:1)

使用the jQuery hide function隐藏元素,the show function显示元素。

将高度设置为0是非标准的。

答案 2 :(得分:1)

您是否尝试过使用 display 属性而非可见性

当使用可见性时,即使没有显示,元素占用空间,使用显示元素也不占空间,因此您不必担心高度

此外,您似乎正在使用jQuery,是否可以使用

来识别div的可见性
  

$(隐藏).show();

     

$(隐藏).hide();

或只是

  

$(隐藏).toggle();

这些是使用css display 属性(see doc)

的jQuery快捷方式