HTML / JS / Coldfusion - 可以在location.href上进行多选择吗?

时间:2016-03-22 19:59:19

标签: javascript html coldfusion

我有一些使用复选框的代码:

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是“多选”。

2 个答案:

答案 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#" />