我有<cfgrid>
一个<cfgridcolumn>
。我正在使用该列的values
属性:
<cfform>
<cfgrid name="grdBrokers"
format="html"
bind ="cfc:CFC.Brokers.getGridData ( {cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection})"
onChange="cfc:CFC.Brokers.editGridData( {cfgridaction},{cfgridrow},{cfgridchanged})"
selectMode = "edit">
<cfgridcolumn name="name" header="Name" values="Item1,Item2" >
</cfgrid>
</cfform>
values
属性会在用户编辑Name
列中的单元格时显示组合框:
我需要动态(不重新加载页面)更改该组合框的选项列表。经过大量研究(stackoverflow.com,raymondcamden.com等),我得出结论,没有ColdFusion方法可以做到这一点,所以我想我会使用JavaScript。要找到组合框的id
,我查看了我的网页的HTML源代码,并找到了以下内容:
<form name="CFForm_1" id="CFForm_1" action="/index2.cfm" method="post" onsubmit="return _CF_checkCFForm_1(this)">
<div id="cfgrid1344103796431" style="border: 1px solid #cccccc; overflow: hidden;"></div>
<select id='cf_grid_select0' class='ygrid-editor'>
<option value='Item1'>Item1</option>
<option value='Item2'>Item2</option>
</select>
<div>
<input type="hidden" name="__CFGRID__CFForm_1__grdBrokers" value="" /></div>
</form>
所以,我想要的ID是cf_grid_select0
。但是,document.getElementById()
找不到此元素。我还使用FireBug检查了该页面,但在DOM选项卡上找不到cf_grid_select0
元素。它包含在document.body.innerHTML
中作为原始HTML文本,但不是DOM中自己的元素。
以下是我的代码,试图找到cf_grid_select0
:
<script type="text/javascript">
function find( ) {
var cbxFind = document.getElementById( 'cf_grid_select0' );
if ( cbxFind ) alert( "Found!" );
else alert( "Not found!" );
}
</script>
<form>
<input id="btnFind" type="button" onclick="find();" value="Find">
</form>
当我点击Find
按钮时,会弹出一个“未找到!”的弹出窗口。
我的问题是:使用JavaScript或jQuery,如何找到我的浏览器显然知道的<select>
,但似乎在DOM中?我怀疑ColdFusion.getGridObject()
可能是我正在寻找的,但我找不到使用该方法选择组合框的方法。
谢谢!
更新
在页面加载后,ColdFusion似乎正在使用ExtJS将<select>
转换为ComboBox
,显然是从DOM中删除了<select>
。我现在正在研究如何找到ExtJS ComboBox
。
答案 0 :(得分:1)
我几乎肯定会使用jQuery!试试这个:
<script>
$(document).ready(function() {
var $mySelect = $("#cf_grid_select0");
alert("I found it..." + $mySelect.attr("id"))
});
</script>
祝你好运。
NINJA编辑
如果您正在查看真实来源,那么它就在DOM中。如果您正在查看“生成的”JS类型的源代码,那么它很棘手,但我认为jQuery可以检测添加到DOM的新元素。