<cfinput> строка внутри блока javascript, вызывающая проблемы - PullRequest
1 голос
/ 03 ноября 2011

У меня есть следующий jQuery (предположительно грязный в данный момент), который добавляет новую строку в таблицу. Тем не менее, он не вставляет поле <cfinput>. Фактически, каким-то образом coldfusion читает этот тег внутри блока javascript, потому что он выдает ошибку CF.

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();
            });

Любая помощь приветствуется!

Ответы [ 3 ]

6 голосов
/ 03 ноября 2011

Вы не можете добавлять теги формы CF через JavaScript.JavaScript происходит в браузере LONG после того, как ColdFusion выполнил любую необходимую ему обработку.К этому времени все, что было тегом CFINPUT (или любым тегом ColdFusion), теперь преобразовано в HTML.

Если вам нужно динамически добавлять поля в форму, просто добавьте обычный старый HTMLэлементы формы.Посмотрите на исходный код в браузере, и вы увидите, что это то, что доставляется в браузер.Ни JS, ни браузер не имеют ни малейшего представления, что такое ColdFusion или CFINPUT.

2 голосов
/ 03 ноября 2011

Я предполагаю, что страница, содержащая JS, является страницей ColdFusion, поэтому она пытается проанализировать что-либо с помощью «является допустимым тегом ColdFusion, и он не в пределах cfform, что делает код недопустимым, поэтому, когда CF впервые пытается отобразить вашу страницу, он выдает ошибку.

Как и другие заявили, что cfinput на этом уровне не будет работать, и вам просто нужно использовать плагин jQuery или получить содержимое через aJax или каким-либо другим способом.

0 голосов
/ 03 ноября 2011

CFINPUT - это тег Coldfusion, и процесс во время компиляции страницы ColdFusion, и когда вы пытаетесь добавить его через jQuery (используя javascript), он не обрабатывается ColdFusion, так как вы работаете на уровне браузера, а у сервера нетЛюбая идея по этому поводу.И в этом случае CFINPUT не является допустимым тегом HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...