【发布时间】:2015-08-18 22:17:16
【问题描述】:
我有一个包含多项选择选项的表单。我想这样做,以便当用户点击提交时,它将使用所有相关字段填充我的数据库,然后为多选部分执行某种循环。
https://jsfiddle.net/vtyofmza/1/
例如,有人在多项选择中突出显示 3 个字段并输入他们的名字。当他们点击提交时,数据库将填充
John Doe - 早餐
John Doe - 小吃
John Doe - 甜点
我在想这样的事情可能会起作用,但它只是重新重置表单
iSelect = $('#meal').val();
iLength = $('#meal option:selected').length;
for (i = 0; i < iLength; i++){
$('#meal').val(iSelect[i])
document.form.submit();
}
但是当它提交信息时,它会返回并重新重置页面。
submit.cfm 看起来像这样
<cfquery name="Add" datasource="food">
INSERT INTO Log (Meal, Name)
VALUES (#Form.Neal#, #Form.Name#)
</cfquery>
<cflocation url="... loops back to original page">
【问题讨论】:
-
您不需要在javascript中对此做任何事情,只需接受coldfusion中的字段值并在那里处理即可。
-
您能否对此进行更深入的解释?
-
@khgove - 正如 Kevin 所说,javascript 的工作是提交输入的表单值。任何循环都应在 ColdFusion 中完成。多个选择列表值将作为 csv 列表提交,即 form.Meal = "Breakfast,Snacks,Dessert"。只需通过该列表loop 并为每餐+名称执行
insert。话虽如此,通常您的列表“值”将是某种数字 id,而不是文本(如果文本包含列表分隔符,这可能会出现问题)。 -
如果上面不只是伪代码,记得在实际查询中使用cfqueryparam,防止sql注入。
-
@Leigh,你能告诉我这个循环是如何完成的吗?我在 SQL 方面也不例外,我主要只用它来查询和插入。与此同时,我会反复试验。另外,是的,这都是伪的,我的主要代码有很大不同。这只是一个快速的概念来展示我正在尝试做的事情
标签: javascript jquery html forms coldfusion