2011-11-03 30 views
1

我有以下jQuery(當然這是一個混亂),它將一個新行附加到表中。但是,它不插入<cfinput>字段。事實上,不知何故,coldfusion正在讀取JavaScript塊內的標籤,因爲它會引發CF錯誤。<cfinput>一個JavaScript塊導致問題的字符串

Context validation error for tag cfinput.The tag must be nested inside a cfform tag 

如果我將其更改爲正常<input>,然後問題消失和現場插入。我需要<cfinput>來使用ColdFusion的本地日期選擇器。無論如何,我很好奇爲什麼會發生這種情況。

$(".aAddLine").click(function(e){ 
       var clickedID = $(this).attr("id"); 
       var lineNo = parseInt(clickedID.split("_")[1]) 
       var newLineNo = parseInt(lineNo+1) 
       var x = ""; 
       $('#tdPlus_' + lineNo).html(""); 
       x += '<tr>'; 
       x += '<td width="50" class="tdPlus' + newLineNo + '"><a class="aAddLine" id="aAddLine_' + newLineNo + '" href="##">+ Line</a></td>'; 
       x += '<td valign="top">Date</td>'; 
/*issue with the <cfinput> on the line below */ 
       x += '<td><cfinput class="dt validate" type="datefield" name="startDate" id="startDate_' + newLineNo + '" validate="eurodate" mask="dd/mm/yyyy" />&nbsp;<span class="res" id="resStartDate_' + newLineNo + '"> <span class="hint"></span></span></td>'; 
       x += '<td style="width:10px">&nbsp;</td>'; 
       x += '<td>Time</td>' 
       x += '<td><input class="validate" type="datefield" name="startTime_' + newLineNo + '" id="startTime_' + newLineNo + '" style="width:35px;"/>&nbsp;<span class="res" id="resStartTime_' + newLineNo + '"></span>&nbsp;to&nbsp;<input class="validate" type="datefield" name="endTime_' + newLineNo + '" id="endTime_' + newLineNo + '" style="width:35px;"/>&nbsp;<span class="res" id="resEndTime_' + newLineNo + '""></span></td>' 
       x += '</tr>' 
       $('#tblItem > tbody:last').append(x); 
       e.preventDefault(); 
       e.stopPropagation(); 
      }); 

任何幫助表示讚賞!

回答

6

您無法通過JavaScript添加CF表單標籤。在ColdFusion完成任何需要處理的操作後,JavaScript在瀏覽器中發生LONG。到那時爲止,所有都是 CFINPUT標記(或任何ColdFusion標記)現在已被轉換爲HTML。

如果您需要動態添加字段到表單,只需添加常規的舊HTML表單元素。查看瀏覽器中的源代碼,您將看到正在傳遞給瀏覽器的內容。 JS或瀏覽器都不知道ColdFusion或CFINPUT是什麼。

+1

我很好奇爲什麼有人低估了這個答案。無論如何我是不準確的?請留下評論。 –

+0

用戶想知道他的代碼爲什麼會出錯,但您沒有涉及。是的,你解釋了他所做的是錯誤的,但他的主要問題或關注IMO是「無論如何,我很好奇爲什麼會發生這種情況。」你回答沒有幫助,所以對我來說這是一個投票。 –

+0

因此,解釋說用戶試圖做的事情完全錯誤,首先是沒有幫助的?你是對的,我沒有解釋爲什麼它會拋出一個錯誤。但我的答案的其餘部分仍然有幫助。而不是downvote你可以編輯我的答案與額外的信息。這提高了答案的質量(這是維基答案的要點)。除非你只是想通過選擇而不是我自己的答案來提高自己的聲譽,否則你就會走上正確的道路。 –

0

CFINPUT是coldfusion標記和ColdFusion頁面編譯時的過程,當您嘗試通過jQuery(使用javascript)添加它時,它不會由ColdFusion進行處理,因爲您在瀏覽器級別工作而Server不對此有任何想法。在這種情況下,CFINPUT不是有效的HTML標籤。

2

我假設包含JS的頁面是一個ColdFusion頁面,因此它試圖用「< CF」解析任何東西。看看你的代碼,cfinput 一個有效的ColdFusion標籤,它的而不是在一個cfform使代碼無效,所以當CF嘗試第一次呈現您的網頁時,它的錯誤。

像其他人所說的那樣,在該級別上使用cfinput將不起作用,您應該只使用jQuery插件或通過aJax或其他方式獲取cfinput>的內容。