IE8仅在事件触发后显示css内容

时间:2014-12-17 15:13:27

标签: jquery css internet-explorer internet-explorer-8 gsp

我在IE8上的css选择器后面有一个问题:

相关代码:

.required:after {
     content:" *";
     color: red;
}
<table id="loss-theft-case">
    <tbody>
        <tr>
            <td width="250px" colspan="2" class="required">
                <g:message code="losstheft.case.naam.label"/>
            </td>
            <td width="175px" colspan="2">
                <g:textField 
                    class="bigInput border_box naam_disableable x-item-disabled" 
                    name="surname" id="surnameCreateCase" value="${customer.surname}" 
                    readonly="readonly"/>    
            </td>
        </tr>
<!-- ...  -->
<div id="loss-theft-case-dialog" style="display:none">
    <g:include view="lossTheft/createLossTheftCase.gsp"/>
</div>
var lossTheftDialog;

function createLossTheftCaseDialog() {

    // Define dialog to be shown.
    lossTheftDialog = $("#loss-theft-case-dialog").dialog({
        autoOpen: false,
        dialogClass: "no-close",
        minWidth: 500,
        minHeight: 375,
        modal: true,
        resizable: false,
        open: focusTabTimeout,
        title: "Aanmaken verlies & diefstal case",
        buttons: {
            "Cancel": {
                id: "create-case-dialog-cancel-btn",
                text: "Annuleren",
                click: function () {
                    clearMessages();
                    lossTheftDialog.dialog("close");
                    log(SUBMIT_CANCEL_LOSSTHEFT_CASE);
                }
            },
            "OK": {
                id: "create-case-dialog-ok-btn",
                text: "Aanmaken",
                click: function () {
                    createCase();
                    log(SUBMIT_LOSSTHEFT_CASE);
                }
            }
        }
    }).css("font-size", "13px");

(此代码打开对话框:)

lossTheftDialog.dialog("open");

首次加载对话框时,不会显示红色*。如果您关闭并重新打开对话框,则会显示红色*。其他以类似方式构建的对话框也存在同样的问题。

其他细节:
当您单击其中一个必填字段时,*会神奇地出现。如果您关闭对话框(通过单击&#39;取消&#39;按钮),则在对话框消失前的那一刻,*将显示为必需。如果您从一个字段切换到另一个字段,则所有*都会出现。

更多信息:
我无法链接到jsfiddle,因为这似乎在IE8中无法正常工作。我尝试了上面的代码但是在IE8中根本没有给出*。如果我在 tryit编辑器中尝试它,它似乎可以工作。

因此,它似乎是一个特定于我们项目中的对话框的问题,但我似乎无法隔离它。我用谷歌搜索和堆栈溢出,现在整天尝试各种各样的东西,但没有找到解决方案。

一条路径是使用jQuery&#39;触发器&#39;模拟点击但唉。

非常感谢任何指针/提示/答案:)

jquery版本:1.11.1(分钟)
jquery UI版本1.10.4

使用<!DOCTYPE html>作为页面的第一行。

This is how the dialog shows up.

This is how it should look.

This is after clicking some 'required' fields.

这是对话框最初显示的方式:(第一张图片)

这应该是它的外观(并在关闭和打开对话框后显示)。 (第二张图片)

这是点击一些必填字段后的对话框:(第三张图片)

编辑:(回复评论)对话框不是动态的;它应该只在首次加载时显示所需的字段(带红色*),但不会显示,如果您关闭并重新打开对话框或单击其中一个必填字段,则会这样做。

更新:遇到同样问题的其他屏幕无法解决问题&#39;通过开放&amp;关闭一个屏幕。

1 个答案:

答案 0 :(得分:0)

发现它:D

根据Jonathan的有用提示,我进一步搜索了一下,发现:this post

我写了一个小帮助方法:

function refreshRequireds(){
    $(".required").parents('tr').addClass('z').removeClass('z');
}

每次打开对话框时我都添加了这一行:

window.setTimeout(refreshRequireds,100);

现在*是(仅仅延迟了100毫秒)显示:)))))

我希望其他人可能会觉得这篇文章很有用......

S上。