0

我正在使用 jqGrid 4.5.2 并且正在使用自定义格式化程序根据来自其他(隐藏)单元格的值在 jqGrid 行中的单元格中构建一个下拉框。

下拉框的选择是根据对 SQL 表的查询结果构建的。此外,我还在它前面加上一行作为指导信息。下拉菜单的构建方式如下:

function getMsgs() {
    $.ajax({
        type: "GET",
        url: myUrl,
        dataType: "xml",
        success: function(data) {
                var select = $("#msglist");
                var selectline = $("<option value='0'>Select Message</option>");
                    select.prepend(selectline);
                    $(data).find("Row").each(function() {
                var ctid = $(this).find("CannedTextID").text();
                var dtext = $(this).find("DisplayText").text();
                var option = $("<option>" + dtext + "</option>");
                option.prop("value", ctid);
                   select.append(option);
                });
        // make the instructional message unselectable
        $("#msglist option[value='0']").attr("disabled", "disabled");
        }
    });

    msgSelect = $("#msglist").select();
}

结果被放入页面中的表单中,HTML如下:

<form class="Messages" action="">
<select id="msglist" class="choices" name="msglist">
<option value="0" disabled="disabled">Select Message</option>
<option value="7"> Message2</option>
<option value="8"> Message3</option>
<option value="9"> Message4</option>
<option value="10"> Message5</option>
<option value="11"> Message6</option>
<option value="12"> Message7</option>
<option value="13">Intermittent problems</option>
<option value="14">Local Network Connectivity issue</option>
<option value="15">Message15</option>
</select>
</form>

在函数的最后,我设置了一个全局变量msgSelect = $("#msglist").select();

在格式化程序中,在满足下拉菜单的条件下,我返回:

return msgSelect[0].outerHTML;

这会在 jqGrid 中显示下拉框,但不会Select Message像初始下拉框那样显示第一行 =,而是显示Message2。在 jqGrid 行中,Select Message灰显且无法选择,但下拉菜单默认为第二行。这select与我在页面其他位置放置的下拉框中的 HTML 相同(即被Select Message禁用,并且在任何地方都没有设置为默认值)。

为什么 jqGrid 自定义格式化程序显示 HTML 的方式不同,即使代码完全相同?

4

1 回答 1

0

没关系。问题在于使用IEvs Firefox。IE 默认选择它,而selected如果我想让 Firefox 做同样的事情,我必须设置属性。

我没有注意到原来的下拉框在列表中有Select Message黑色(Firefox),在下拉列表中有灰色,而 IE 将它们都显示为灰色。

于 2013-06-24T15:39:11.937 回答