【发布时间】:2013-06-24 15:07:13
【问题描述】:
我正在使用 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 的方式不同,即使代码完全相同?
【问题讨论】:
标签: jquery html xml select jqgrid