我正在从表单集中发送一个逗号分隔列表,除了第一个项之外,每个可能的选定项都只能在没有选择的情况下被添加。
QUANTY=10-1,1-0,2-0,3-0,4-0,5-0,7-0,6-0,8-0,9-0,15-0,13-0
列表中的每个元素都是一个数字、一个连字符和另一个数字。第一个数字是产品编号,第二个数字是数量。
如果列表中的第一个元素是10-1,则不能添加任何其他项,因此它们必须是数字-0,就像3-0中的那样。
如果任何其他元素包含-1,则此语句有效。
<cfif ListFirst(QUANTY) IS "10-1" AND ListRest(QUANTY) contains "-1">
<tr>
<td align="center">
<font color="#FF0000"><strong>
You cannot add any features to the Basic Plan<p>
Please click "Back" and reset your order.
</strong></font>
</td>
</tr>
<cfabort>
</cfif>当选择大于1的数量时,就会出现这样的问题:
QUANTY=10-1,1-0,2-0,3-0,4-0,5-0,7-0,6-0,8-4,9-0,15-0,13-0
在cfif语句中,我似乎无法让“中间”函数工作:
AND ListRest(QUANTY) contains "-1">如:
AND ListRest(QUANTY) BETWEEN "-1" and "-50">如有任何建议请见谅
发布于 2015-03-07 11:53:20
ListRest(quanty) contains "1"对诸如"1-0“之类的值返回true。这显然不是你想要的。
我建议将您的字符串作为嵌套列表处理。外部列表为逗号删除,内部为连字符分隔。这种方法应该有效。
<cfif ListLast(ListFirst, Quanty, ","), "-") gt "0">
loop through the rest of Quanty and use ListLast to check
the values after the hyphen
<cfelse>
code for this condition
</cfif>发布于 2015-03-11 01:51:28
我尝试了上面的脚本,得到了一个错误.
我写了这篇文章,似乎还行:
<cfset qty1 = "#ListFirst(QUANTY)#">
<cfset qty2 = ListLast(qty1, "-")>
<cfif (qty2 GT 0) AND
((ListRest(QUANTY) contains "-1") OR
(ListRest(QUANTY) contains "-2") OR
(ListRest(QUANTY) contains "-3") OR
(ListRest(QUANTY) contains "-4") OR
(ListRest(QUANTY) contains "-5") OR
(ListRest(QUANTY) contains "-6") OR
(ListRest(QUANTY) contains "-7") OR
(ListRest(QUANTY) contains "-8") OR
(ListRest(QUANTY) contains "-9"))>
do this
</cfif>谢谢,如果有一个较短的方式来写它,我将感谢输入。
发布于 2015-03-13 03:13:33
您的解决方案应该有效,但是正则表达式可能更优雅。
<cfif ListFirst(QUANTY) is "10-1" and REFind("-[1-9]",ListRest(QUANTY))>
Do something
</cfif>应该行得通。Reg表达式非常有用。如果您以前没有使用过它们,那么上面的一个将查找一个破折号,后面跟着一个从1到9的数字。
https://stackoverflow.com/questions/28912379
复制相似问题