【问题标题】:returning sum from server side by json通过json从服务器端返回总和
【发布时间】:2012-03-11 18:18:02
【问题描述】:

我正在通过 onkey up 事件添加两个文本框值。每次输入数据,都会提交到服务器,然后结果会以json的形式返回。我通过 json 获得一个文本框(通过组合的 onchange 事件)并且另一个文本框已经存在于 html 中,当我在第二个文本框中更改数据时(在 html 中)然后计算总数但是当我更改数据时第一个文本框(在 javascript 中)然后不计算总数?我哪里错了?第一个和第二个文本框具有相同的类submitme

 $(document).ready(function() {
$(".submitme").keyup(function () {
        $.getJSON('total.jsp', {
        firsttextboxname: jQuery("#firsttextbox").val(), secondtextboxname:
 jQuery("#secondtextbox").val()
        }, function (responseData) {
             var total = responseData.sum;
              $("#thirdtextbox").val(total);// displays total
    });
});


 $("#combo").change(function () {
        $.getJSON('combo.jsp', {
            comboboxname: this.value
        }, function (responseData) {
           // returns a text box (first text box)
     $("#adiv").empty().append("<input type='text' class='submitme' id='firsttextbox' name='firsttextboxname'/>");

    });

 });
});

html

<div id="adiv">
// getting first text box here
</div>
//second text box whose data is also taken along with first text box each time

 <input type="text" id="secondtextbox" class="submitme" name="secondtextboxname"/>// taking value from this text box to calculate sum

 <input type="text" id="thirdtextbox"/>// auto filling sum here

服务器端(total.jsp)

 String a=request.getParameter("firsttextboxname");// getting first text box name
 String b=request.getParameter("secondtextboxname");/ getting second text box name

 int c=Integer.parseInt(a);// converting to integer
 int d=Integer.parseInt(b);//converting to integer

 int e=c+d;// calculating total

 JSONObject jsonObj= new JSONObject(); 

 jsonObj.put("sum",e);// sending sum to client side

 response.setContentType("application/json");
 response.getWriter().write(jsonObj.toString());

【问题讨论】:

    标签: javascript jquery html json


    【解决方案1】:

    当您异步添加组合框(或任何元素)时,它不会获得 keyup 事件绑定。你必须像这样使用 .live() :

    $(".submitme").live("keyup", function() {
        // stuff
    });
    

    有关 .live() 工作原理的详细信息,请参阅jQuery documentation

    【讨论】:

    • 但是当第一个文本框变空时总和仍然保留在那里没有自动清除为什么?清除文本框时如何清除总计?
    • 如果您使用的是 jQuery1.7.1+,请使用 jQuery .on()
    【解决方案2】:

    在我看来,您将 keyup 事件添加到 domready 中的“.submitme”类元素中,但文档中还没有第一个文本框。

    它已添加到您的#combo 的更改事件中,因此它不会获得分配给它的 keyup 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多