【问题标题】:How to get two values using a checkbox in HTML?如何使用 HTML 中的复选框获取两个值?
【发布时间】:2023-03-19 07:59:01
【问题描述】:

我想知道是否可以从 HTML 形式的复选框中获取两个值。

我的 HTML 代码是这样的:

<input type="checkbox" name="order" value="20" > Sundae $20
<input type="checkbox" name="order" value="15" > Sandwich $10
<input type="checkbox" name="order" value="25" > Reg. Burger $30

设置的值是订单的价格。因此,当我在 Java servlet 中对其进行编码时,我可以汇总订购的数量。 (我的代码是这样的)

String [] price = request.getParameterValues("order");
int sumTotal = 0;
for (String sum : price){
    sumTotal=sumTotal+Integer.parseInt(sum);
}

out.println("<h1>Total Amount Purchased: $" + sumTotal  + "</h1>");

我的问题如下:

我想在汇总之前显示订单名称和价格,但我不能,因为我只能使用以下代码获取价格值:

String [] price = request.getParameterValues("order");`

除了价格,我如何获得商品的名称? 我想在我的 HTML 中调用两个值,如下所示:

<input type="checkbox" name="order" value="20" value="Sundae $20") Sundae $20 

所以在我的 Servlet 中结果会是这样的:

 Ordered by Customer 1:
      Sundae $20
      Sandwich $10 
      Total: $30 <------//I could only do this

但我认为这是不可能的,我不知道如何在java中调用它。

另外,如何改进我的代码以获取总金额?

【问题讨论】:

    标签: java html servlets


    【解决方案1】:

    “值”应该是选项的名称:

    <input type="checkbox" name="order" value="sundae" > Sundae $20
    <input type="checkbox" name="order" value="sandwich" > Sandwich $10
    <input type="checkbox" name="order" value="burger" > Reg. Burger $30
    

    现在您知道选择了哪些商品(而不仅仅是它们的价格)。

    它破坏了您计算总价的代码。然而它已经很破碎了。您不能依靠客户提供的自豪感来决定服务器上的总价格。用户可以非常轻松地向您发送值为“1”的表单回复并破坏所有内容。

    服务器需要知道每件商品的价格并使用它。

    String [] items = request.getParameterValues("order");
    int sumTotal = 0;
    for (String item : items) {
        sumTotal=sumTotal+prices.getPriceOf(item);
    }
    

    在哪里

     prices.getPriceOf(item)
    

    提供订购商品的价格(实际上代码应该比这更复杂:它应该检查商品是否存在等等)。

    您可能希望使用文本框而不是复选框,以便能够订购多个商品。

    【讨论】:

      【解决方案2】:

      我解决它的一种快速方法是使用隐藏字段

      <input type="hidden" id="total">
      

      将计算提交按钮的onclick。所以,total.value 最终会看起来像圣代,20 美元;三明治,10 美元...

      由于隐藏字段是作为表单提交的一部分传输的,您应该可以这样做

      request.getParameterValues("total")
      

      然后在 Java 代码中解组它。

      对于更优雅的解决方案,JSON 应该会有所帮助。

      【讨论】:

        【解决方案3】:

        使用 value 的值作为产品代码,例如 sundae1==Sundae, burger1==Reg。汉堡,burger2==双汉堡。在您的 Java 中有一个对象,例如

        class Product {
            String code;
            String name;
            int price; // in pennies - 1000 is $10
        }
        

        当您收到复选框中的值时,您可以使用代码查找产品,例如,Map&lt;String, Product&gt; 键入产品代码。

        这样做还可以避免您遇到的问题,即我篡改网络浏览器中的值并以每个 0.01 美元的价格购买菜单上的所有东西。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-16
          • 1970-01-01
          • 2012-11-09
          • 2015-02-11
          • 2014-08-04
          相关资源
          最近更新 更多