我在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>
作为页面的第一行。
这是对话框最初显示的方式:(第一张图片)
这应该是它的外观(并在关闭和打开对话框后显示)。 (第二张图片)
这是点击一些必填字段后的对话框:(第三张图片)
编辑:(回复评论)对话框不是动态的;它应该只在首次加载时显示所需的字段(带红色*),但不会显示,如果您关闭并重新打开对话框或单击其中一个必填字段,则会这样做。
更新:遇到同样问题的其他屏幕无法解决问题&#39;通过开放&amp;关闭一个屏幕。
答案 0 :(得分:0)
我发现它:D
根据Jonathan的有用提示,我进一步搜索了一下,发现:this post。
我写了一个小帮助方法:
function refreshRequireds(){
$(".required").parents('tr').addClass('z').removeClass('z');
}
每次打开对话框时我都添加了这一行:
window.setTimeout(refreshRequireds,100);
现在*是(仅仅延迟了100毫秒)显示:)))))
我希望其他人可能会觉得这篇文章很有用......
S上。