В настоящее время я работаю над проектом, и я просто не могу понять, как заставить это работать с помощью ColdFusion на серверной части. Я надеюсь найти специалиста, который поможет.
Я использую плагин jQuery relCopy для добавления полей "Ингредиент" в свою форму. (Я бы связал, но он разрешает только один.) Это начало нескольких проблем:
У меня есть флажки как часть "дублированных" элементов формы. Они увеличиваются по идентификатору, но если все не выбрано, я просто получаю уведомление о количестве выбранных элементов, а не о том, какие конкретные записи были выбраны.
После того, как я отправил информацию, я понятия не имею, как написать цикл в ColdFusion, чтобы пройти и получить информацию, отправленную в базу данных.
Как я могу редактировать существующие записи?
Если я разберусь с 1 и 2, я думаю, что смогу работать над № 3. Вы можете просмотреть пример того, что я пытаюсь сделать здесь http://jquery.previewsite.us
Любая помощь будет принята с благодарностью.
Ответ 1 · рейтинг 3 · Raymond Camden
Область формы в ColdFusion - это структура. Это означает, что вы можете исследовать ее, как и любую другую структуру. Попробуйте использовать structKeyList(), например, чтобы увидеть все ключи формы. Затем вы можете работать с любым полем формы, используя запись в квадратных скобках, #form[somekey]#. Вы также можете использовать cfdump в форме, чтобы увидеть, что было отправлено.
Ответ 2 · рейтинг 2 · Edward M Smith
Из того, что я видел в вашем примере, проблема заключается в том, что идентификаторы элементов формы добавляются с увеличением числа, а имена - нет.
Это означает, что если у вас есть 2 ингредиента, вы получите что-то вроде:
form.quantity = "1,3"
form.quantityType = "tablespoon,cup"
form.ingredient = "oil, flour"
form.notes = "canola,sifted"
form.isheading = "true,false"
Вы можете попытаться предположить, что заказы всегда будут одинаковыми (и они, вероятно, будут, но это слишком много волшебства для меня), и сделать что-то, где вы перебираете длину поля, которое, как вы знаете, должно быть заполнено. Вы можете сделать скрытое поле или что-то в этом роде, но оно будет выглядеть примерно так:
<cfset ingredients = arrayNew(1)>
<cfloop from="1" to ="#listLen(form.quantity)#" index="i">
<cfset ingredient = structNew()>
<cfset ingredient.quantity = listGetAt(form.quantity,i)>
<cfset ingredient.quantityType = listGetAt(form.quantityType,i)>
{and so on...}
<cfset listAppend(ingredients,ingredient)>
</cfloop>
и в конечном итоге с набором ингредиентов.
Что я действительно хотел бы сделать, так это заставить имена форм иметь итеративный номер, а затем вы могли бы собрать их с помощью чего-то вроде
form["quantity#i#"] - which would give you the value of quantity1, quantity2, etc.
Ответ 3 · filmibuff
В итоге я изменил relCopy.js, поскольку текущая версия изменяет только идентификаторы полей формы, но имена остаются прежними, вызывая путаницу. Если кто-то поставит запятую или не установит флажок, это приведет к большому взрыву кода.
Я просто добавил этот раздел в файл js, и это дало мне уникальные имена полей. Затем я просто использовал тот же счетчик на стороне сервера CF, проверил и сослался на поля формы.
// Increment Clone Names
if ( $(clone).attr('name') ){
var newid = $(clone).attr('name') + (counter +1);
$(clone).attr('name', newid);
};
// Increment Clone Children Names
$(clone).find('[name]').each(function(){
var newid = $(this).attr('name') + (counter +1);
$(this).attr('name', newid);
});