我有一些使用复选框的代码:
Error: Could not find or load main class -version
选中此复选框后,它会重新加载我的页面,但这是我的问题所在。当我选择另一个传递不同值的复选框时(下面的顺序是与上面不同的值):
input type="checkbox" onclick="location.href='test-launch.cfm?Code=7&After=8&OrderOn=9
页面重新加载并且不再显示input type="checkbox" onclick="location.href='test-launch.cfm?Code=7&After=8&OrderOn=5
的任何数据,它只显示orderOn = 9
的数据。我希望“多选”可以与OrderOn = 5
一起使用。有没有更好的方法来解决这个问题,因为location.href
是“多选”。
答案 0 :(得分:1)
当您使用多选时,它会将每个选定的值作为URL中的不同参数传递,并且它们通常被赋予数组样式名称,以便服务器脚本将接收所有这些。因此URL应如下所示:
test-launch.cfm?Code=7&After=8&OrderOn[]=9&OrderOn[]=5
您可以定义一个功能,为参数添加另一个订单ID。
function addOrder(n) {
var search = location.search;
if (search.length = 0) {
search = "?OrderOn[]=" + n;
} else {
search += "&OrderOn[]=" + n;
}
location.href = 'test-launch.cfm' + search;
}
然后将您的HTML更改为:
<input type="checkbox" onclick="addOrder(9)">
答案 1 :(得分:1)
我认为这段代码可以满足您的需求。
当您查看更多框时,您的网址会增长。您不需要在字段名称中使用[]
,ColdFusion会自动将相同参数名称的查询字符串值转换为以逗号分隔的值列表。我认为最新版本有一些标志可以自动将列表转换为数组。
此代码只提交到同一页面。只需更改表单操作的值即可将其发布到其他位置。
http://127.0.0.1/test/reload.cfm?whatever=2&whatever=4&whatever=6&whatever=8&whatever=10
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script>
$(document).ready(function(){
$('.clickMe').on('click', function() {
$('#foo').submit();
});
});
</script>
<cfparam name="url.whatever" type="string" default="" />
<form name="foo" id="foo" action="" method="get">
<cfoutput>
<cfloop from="1" to="10" index="x">
<cfset checked = false />
<cfif listFindNoCase(url.whatever, x)>
<cfset checked = true />
</cfif>
<label for="whatever_#x#"><input type="checkbox" name="whatever" id="whatever_#x#" class="clickMe" value="#x#" <cfif checked>checked="checked"</cfif>>#x#</label><br />
</cfloop>
</cfoutput>
</form>
<cfdump var="#url#" />