首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript和coldfusion在中填充动态创建的下拉框

如何使用javascript和coldfusion在中填充动态创建的下拉框
EN

Stack Overflow用户
提问于 2013-03-30 21:06:38
回答 4查看 1.7K关注 0票数 0

我在一行中有一个动态创建的下拉框。我将在屏幕中填充该框。有没有办法使用cfquery从sql服务器获取信息并填充下拉框?我想在javascript中做这件事?

下面是我的代码:

代码语言:javascript
复制
<script language="javascript" type="text/javascript">
function addRow() {

    var tbl = document.getElementById('tblSample');
    var lastRow = tbl.rows.length;  
    var iteration = lastRow;
    var row = tbl.insertRow(lastRow);

  // left cell
    var cellLeft = row.insertCell(0);
    var textNode = document.createTextNode(iteration-3);
    cellLeft.appendChild(textNode);

      // select cell
    var cellRightSel = row.insertCell(1);
    var sel = document.createElement('select');
    sel.name = 'sectCode' + iteration;
    sel.id = 'sectCode' + iteration;    
    sel.options[0] = new Option('---Any---', '0');
    sel.options[1] = new Option('Level 0.5: test1, '1');
    sel.options[2] = new Option('Level I: test2', '2');
    sel.options[3] = new Option('Level I.D: test3', '3');
    sel.options[4] = new Option('Level II.1: test4', '4');
    sel.options[5] = new Option('Level II.5: test5', '5');
    cellRightSel.appendChild(sel);

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-31 04:30:33

plalx的答案很好,但如果你真的想用Javascript来做这件事,你可以简单地这样做:

代码语言:javascript
复制
sel.options[0] = new Option('---Any---', '0');
<cfoutput query="yourQuery">
    sel.options[#yourQuery.CurrentRow#] = new Option('#yourQuery.value#', '#yourQuery.text#');
</cfoutput>

您可能还想使用ColdFusion的JSStringFormat函数来防止查询中这些值中的撇号之类的东西在Javascript中造成任何问题:

代码语言:javascript
复制
sel.options[0] = new Option('---Any---', '0');
<cfoutput query="yourQuery">
    sel.options[#yourQuery.CurrentRow#] = new Option('#JSStringFormat(yourQuery.value)#', '#JSStringFormat(yourQuery.text)#');
</cfoutput>
票数 0
EN

Stack Overflow用户

发布于 2013-03-30 21:59:15

好吧,如果您的页面是一个.cfm (我假设它是),为什么不直接使用ColdFusion生成整个select HTML呢?你有什么特殊的理由想要避免这种情况吗?

代码语言:javascript
复制
<select name="test">
    <cfoutput query="yourQuery">
        <option value="#yourQuery.value#">#yourQuery.text#</option>
    </cfoutput>
</select>

但是,如果您希望将数据结构从ColdFusion传递到JavaScript,则可以使用诸如JSON之类的数据交换格式来完成。您的JavaScript代码可以进行Ajax调用来检索数据,或者您可以直接在页面中输出JSON,并使其可在JS中访问,如下所示:

代码语言:javascript
复制
<script>
    var optionsData = <cfoutput>#serializeJson(yourQuery)#</cfoutput>;
</script>

在这种情况下,optionsData JS变量将引用一个包含查询数据的对象。您可以找到有关序列化查询here的更多信息。

票数 2
EN

Stack Overflow用户

发布于 2013-03-30 22:34:35

另一种方法是使用cfformcfselect

代码语言:javascript
复制
<cfform>
    <cfselect name="something" 
              query="yourquery" 
              value="AFieldFromTheQuery" 
              display="AnotherFieldFromTheQuery">

    ... etc
</cfform>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15718857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档