2011-11-03 17 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>的内容。