目前我正处于后端有商家解决方案服务的项目中。不幸的是我搞砸了。最初我们认为我们不必填充网站加载后我们“生成”的任何表单字段。因此,我只需使用一些javascript即可通过单击按钮创建其他表单条目。这很好用,我们可以使用用户放在那里的任何东西从ColdFusion上传到数据库。
但我们的管理层没有给我们适当的设计要求。他刚刚回来说“好的,现在只需添加一些下拉菜单,以便他们可以选择版本”。我想你可以在这里看到问题。现在我们需要使用来自服务器的信息填充动态表单字段的部分。 Ergo客户端解决方案现在基本上落在了crapper上。
所以我来找你帮助朋友。有没有办法仍然保留我使用ColdFusion等效的JS所做的功能?我知道必须有,但我想找一个简单的转换。
以下是addInput.js文件的外观:
// JavaScript Document
var counter = 0;
var UID = counter + 1;
var limit = 3;
function addInput(divName){
if (counter == limit) {
alert("You have reached the limit of adding " + counter + " inputs");
}
else {
var newdiv = document.createElement('div');
newdiv.innerHTML = "<input type='hidden' value='new' name='Detail_ID'>"
+ "<input type='text' value='' name='level' maxlength=255 PASSTHROUGH='style=width:640;color:#editcolor#' TABINDEX='5'>"
+"<input type='text' value='' name='offer' maxlength=255 PASSTHROUGH='style=width:640;color:#editcolor#' TABINDEX='5'>"
+"<input type='text' value='' name='disclaimer' maxlength=255 PASSTHROUGH='style=width:640;color:#editcolor#' TABINDEX='5'>";
"<CFSELECT NAME = 'version_no' QUERY = VersionList VALUE = 'code' DISPLAY = 'description' SELECTED = #version_no# ></CFSELECT>"
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}
这是在主.cfm页面上创建它的按钮:
<input type="button" value="Add Another VIP Level" onClick="addInput('dynamicInput');">
答案 0 :(得分:1)
我认为您的问题显示了对CF以及任何应用服务器的工作原理的误解。您的浏览器向服务器发送请求,服务器读取coldfusion但使用它生成html,然后将其发送回您的浏览器。没有请求另一个页面,以及另一次往返服务器,没有办法让coldfusion为你做任何事情。
但不要害怕,你可以做些什么。加载一个JS框架并将一个AJAX命令发送到cfm,该cfm只包含你的cfselect代码。它可以返回HTML,然后您可以使用JS直接注入页面。