我在一行中有一个动态创建的下拉框。我将在屏幕中填充该框。有没有办法使用cfquery从sql服务器获取信息并填充下拉框?我想在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);
}发布于 2013-03-31 04:30:33
plalx的答案很好,但如果你真的想用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中造成任何问题:
sel.options[0] = new Option('---Any---', '0');
<cfoutput query="yourQuery">
sel.options[#yourQuery.CurrentRow#] = new Option('#JSStringFormat(yourQuery.value)#', '#JSStringFormat(yourQuery.text)#');
</cfoutput>发布于 2013-03-30 21:59:15
好吧,如果您的页面是一个.cfm (我假设它是),为什么不直接使用ColdFusion生成整个select HTML呢?你有什么特殊的理由想要避免这种情况吗?
<select name="test">
<cfoutput query="yourQuery">
<option value="#yourQuery.value#">#yourQuery.text#</option>
</cfoutput>
</select>但是,如果您希望将数据结构从ColdFusion传递到JavaScript,则可以使用诸如JSON之类的数据交换格式来完成。您的JavaScript代码可以进行Ajax调用来检索数据,或者您可以直接在页面中输出JSON,并使其可在JS中访问,如下所示:
<script>
var optionsData = <cfoutput>#serializeJson(yourQuery)#</cfoutput>;
</script>在这种情况下,optionsData JS变量将引用一个包含查询数据的对象。您可以找到有关序列化查询here的更多信息。
发布于 2013-03-30 22:34:35
另一种方法是使用cfform和cfselect
<cfform>
<cfselect name="something"
query="yourquery"
value="AFieldFromTheQuery"
display="AnotherFieldFromTheQuery">
... etc
</cfform>https://stackoverflow.com/questions/15718857
复制相似问题