0

现在我正在一个项目中,后端有商家解决方案服务。不幸的是我搞砸了。最初,我们认为我们不必填充网站加载后“生成”的任何表单字段。所以我简单地使用了一些 javascript 来创建额外的表单条目,只需点击一个按钮。这工作得很好,我们可以使用用户放在那里的任何东西从 ColdFusion 上传到数据库。

但是我们的管理层没有给我们适当的设计要求。他只是回来说“好的,现在只需添加一些下拉菜单,以便他们选择版本”。我想你可以在这里看到问题。现在我们需要使用来自服务器的信息填充一些动态表单字段。Ergo 客户端解决方案现在基本上是废话。

所以我来为你帮助朋友。有没有办法仍然保留我对 JS 所做的功能与 ColdFusion 等效?我知道必须有,但我试图找到一个简单的转换。

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');">
4

1 回答 1

1

我认为您的问题显示了对 CF 以及任何应用程序服务器如何工作的误解。您的浏览器向服务器发送请求,服务器读取冷融合但使用它生成 html,然后将其发送回您的浏览器。如果不请求另一个页面,以及另一个到服务器的往返,就没有办法让coldfusion为你做任何事情。

但不要害怕,你可以做一些事情。加载一个 JS 框架并将一个 AJAX 命令发送到一个 cfm,其中只有你的 cfselect 代码。它可以返回 HTML,然后您可以使用 JS 将其直接注入您的页面。

于 2012-10-05T19:53:50.747 回答