1

私は<cfgrid>1 つを持ってい<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のセルを編集したときにコンボボックスが表示されます。NameValues 属性によるセル内コンボボックス

そのコンボボックスのオプション リストを動的に (ページをリロードせずに) 変更する必要があります。多くの調査 (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 を使用してページを検査しcf_grid_select0ましたが、DOM タブに要素が見つかりません。生の HTML テキストとして含まれdocument.body.innerHTMLていますが、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 を使用して、ブラウザが明らかに知っているが DOM に<select>ないように見えるものをどのように見つけることができますか? 私ColdFusion.getGridObject()が探しているものかもしれませんが、その方法を使用してコンボボックスを選択する方法も見つかりません。

ありがとうございました!

更新: ColdFusion は ExtJS を使用して、ページの読み込み後に を に変換しているようで、DOM から を削除し<select>ているようです。ExtJS を見つける方法を現在調査中です。ComboBox<select>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 に答える