Возврат суммы с серверной стороны json

Я добавляю два значения текстового поля с помощью события 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());

Ответ 1

Когда вы асинхронно добавляете поле со списком (или любой элемент), оно не получает привязки события keyup. Вы должны использовать .live() следующим образом:

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

Подробнее о том, как работает файл .live(), можно найти в документации jQuery.

Ответ 2

Мне кажется, что вы добавляете события keyup к элементам класса ".submitme" в domready, но firsttextbox еще не находится в документе.

его добавили в ваше событие #combo change, поэтому он не получил назначенное ему событие keyup.