1

我有<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由 Values 属性产生的单元格内组合框

我需要动态(不重新加载页面)更改该组合框的选项列表。经过大量研究(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>为 a ComboBox,显然<select>从 DOM 中删除了 。我现在正在研究如何定位 ExtJS ComboBox

4

1 回答 1

1

我几乎肯定会使用 jQuery!尝试这个:

<script>
$(document).ready(function() {

var $mySelect = $("#cf_grid_select0");
alert("I found it..." + $mySelect.attr("id"))

});
</script>

祝你好运。

忍者编辑

如果您正在查看真正的源代码,那么它就在 DOM 中。如果您正在查看“生成”的 JS 类型的源,那么这很棘手,但我认为 jQuery 无论如何都可以检测到添加到 DOM 的新元素。

于 2012-08-04T20:38:15.773 回答