我正在使用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
显示为灰色&amp;无法选择,但下拉列表默认为第二行。 select
与我在页面上其他位置的下拉框中的HTML相同(即Select Message
已禁用,并且未在任何位置设置为默认值)。
为什么jqGrid自定义格式化程序以不同方式显示HTML,即使代码完全相同?
答案 0 :(得分:0)
没关系。问题在于使用IE
vs Firefox
。 IE默认选择它,而如果我想让Firefox做同样的事情,我必须设置属性selected
。
我没有注意到原始下拉框中列表中的Select Message
为黑色(Firefox),下拉列表中为灰色,而IE则两者都显示为灰色。