2012-10-05 75 views
0

現在我正在使用後端商家解決方案服務的項目。不幸的是我瘋了。最初我們不認爲我們必須填充網站加載後我們「生成」的任何表單字段。所以我簡單地使用一些JavaScript來創建額外的表單條目,只需點擊一個按鈕。這工作得很好,我們可以使用用戶放置的任何內容從ColdFusion上傳到數據庫。ColdFusion:通過按下按鈕動態添加CFSELECT文檔

但是我們的管理層沒有給我們適當的設計要求。他剛回來說「好吧,現在只需添加一些下拉菜單,以便他們可以選擇版本」。我想你可以在這裏看到問題。現在我們需要用來自服務器的信息填充動態表單字段的的一些。 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');"> 
+2

您正在嘗試混合使用服務器端和客戶端腳本。 CF在服務器上呈現併發送給客戶端,一旦它在客戶端上,則不再有CF.您可以使用cfc和ajax完成您想要做的事情。 – Busches

+0

好吧,我不確定你讀了我說得對的。我想要使​​用這個JS腳本的功能並創建一個Coldfusion等價物。我完全瞭解混合客戶端和服務器端的含義。 爲了避免這些缺陷,我只是想用coldfusion重新創建上述JavaScript的功能。 –

+0

你不能在JS中做某些事情,在大多數情況下,這是其中之一,並在CF中重做它。再次,您可以通過使用ajax調用cfc來生成cfselect通常會實現的內容,從而完成您所要達到的目標。谷歌搜索會發現你很多的例子。 – Busches

回答

1

我覺得你的問題表明的一種誤解CF和真正的應用服務器如何工作。你的瀏覽器向服務器發送一個請求,服務器讀取coldfusion,但用它來生成html,然後發回給你的瀏覽器。如果沒有請求另一個頁面,並且再往返服務器,沒有辦法讓coldfusion爲你做任何事情。

但是不要害怕,你可以做些什麼。加載一個JS框架並將一個AJAX命令發送給一個cfm,它只有你的cfselect代碼。它可以返回你的HTML,然後你可以使用JS直接注入你的頁面。

+0

這是正確的,我在這裏肯定有隧道視野。 –