2 qq 24466159 qq_24466159 于 2016.04.10 15:19 提问

form关于checkbox的键值匹配问题
    <table align="center">
        <tr>
            <td><input type="checkbox" name="names" value="面包">面包 &nbsp;&nbsp;</td>
            <td><input type="hidden" name="price" value="4">价格:4 &nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td>数量:<input class="min" name="" type="button" value="-" />
             <input class="text_box" name="number" type="text" value=<%=commodity.getNumber() %> />
             <input class="add" name="" type="button" value="+" /></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="names" value="葡萄">葡萄&nbsp;&nbsp;</td>
            <td><input type="hidden" name="price" value="12">价格:12 &nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td>数量:<input class="min" name="" type="button" value="-" />
             <input class="text_box" name="number" type="text" value=<%=commodity.getNumber() %> />
             <input class="add" name="" type="button" value="+" /></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="names" value="苹果">苹果 &nbsp;&nbsp;</td>
            <td><input type="hidden" name="price" value="3">价格:3 &nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td>数量:<input class="min" name="" type="button" value="-" />
             <input class="text_box" name="number" type="text" value=<%=commodity.getNumber() %> />
             <input class="add" name="" type="button" value="+" /></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="names" value="香蕉">香蕉 &nbsp;&nbsp;</td>
            <td><input type="hidden" name="price" value="1">价格:1 &nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td>数量:<input class="min" name="" type="button" value="-" />
             <input class="text_box" name="number" type="text" value=<%=commodity.getNumber() %> />
             <input class="add" name="" type="button" value="+" /></td>
        </tr>
        <tr>
            <td><input type="checkbox" name="names" value="白菜">白菜 &nbsp;&nbsp;</td>
            <td><input type="hidden" name="price" value="1">价格:1 &nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td>数量:<input class="min" name="" type="button" value="-" />
             <input class="text_box" name="number" type="text" value=<%=commodity.getNumber() %> />
             <input class="add" name="" type="button" value="+" /></td>
        </tr>

        <tr>
        <th><input type="submit" id="" value="提交" onclick="getValue()"/>
        <input type="reset" id="" value="重置"></th>
        </tr>       
    </table>

如果我选择

 <td><input type="checkbox" name="names" value="面包"></td>

那么对应的price和number怎么跟它匹配然后通过form传过去,现在情况是 names传过去了,但是price和number是按顺序传过去 也names不匹配的 谢谢!

3个回答

friendly_6
friendly_6   2016.04.10 16:38
已采纳

我是采用后台字符串的拼接,这样的话需要修改前端代码。

form表单中的数据,一组checkBox的话,name属性都相同,可以用request.getParameterValues()取得并不会出错。
而如果是其他的表单数据,他们name属性相同,例如用request.getParameterValues(“price“)获取,就会返回所有name属性为price的表单元素,顺序从上至下,所以他们的name元素不应该相同

JSP代码如下

 <tr>
            <td>
                <input type="checkbox" name="names" value="面包">面包&nbsp;&nbsp;
            </td>
            <td>
                <input type="hidden" name="面包Price" value="4">价格:4 &nbsp;&nbsp;&nbsp;&nbsp;    <!-- 最好不要用中文-->
            </td>
            <td>
                数量:<input class="min" name="" type="button" value="-" />
                <input class="text_box" name="面包Number" type="text" value='5' />
                <input class="add" name="" type="button" value="+" />
             </td>
        </tr>

Java代码如下

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        request.setCharacterEncoding("UTF-8");   
        String[] names = request.getParameterValues("names");  //names是可以正确获取的,那么利用names可以获取与它对应的属性。
        for(int i=0;i<names.length;i++)
        {
            System.out.print(names[i]); 
            System.out.print("-"+request.getParameter(names[i]+"Price"));      //字符串拼接该项的价格
            System.out.println("-"+request.getParameter(names[i]+"Number"));  //该项的数量
        }
    }

还有就是用javascript,不过没思路啊逃 =w=

qq_24466159
qq_24466159 这是一种方法 是标签名字区别来匹配键值。 试过了 成功!
一年多之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.10 16:05

可以设置这个checkbox的onCheck事件,如果被选中的话,就设置关联的其他属性的值。

wojiushiwo945you
wojiushiwo945you 回复qq_24466159: doSom()可以是一个js的function,执行你需要的处理。
一年多之前 回复
wojiushiwo945you
wojiushiwo945you 回复qq_24466159: <td><input type="checkbox" name="names" value="面包" oncheck="doSom();"></td>
一年多之前 回复
qq_24466159
qq_24466159 请问怎么关联能给个例子么?小白刚入门 谢谢
一年多之前 回复
qq_24466159
qq_24466159   2016.04.10 16:16

请问怎么关联能给个例子么?小白刚入门 谢谢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!