JQuery текст в div для ввода в админ - PullRequest
0 голосов
/ 13 марта 2011

На одной странице есть статьи с ценами. Я хотел бы сделать администрацию. Когда я являюсь администратором и нажимаю на поле ввода цены, отображается текст.

Мой код для этого:

$('#priceBig').click(function() {
    var originalelement = this;
    var dishID = this.id;
    var currentText = $.trim($(this).text())

    $(this).hide().before('<input class="input" id="'+dishID+'" style="padding:3px; text-align:left; font-size:17px; width:50px;"  type="text" value="'+currentText+'"/>');     

    $('.input').live('change', function() {
        var picaID = this.id;
        var price = $(this).val();
        var thisparam = this;

        $.post('<?= site_url('dish/changePicaBigPrice') ?>',{ picaID : picaID, price:price}, 
        function(data) { 
            $(thisparam).remove();  
            $(originalelement).text(price).fadeIn(1000);
        },'text');

    });

});

Но это не работает, потому что jQuery хранит все объекты originalelement и каждое изменение цены меняет все originalelement элементы, которые были нажаты до ...

Надеюсь, мне было ясно, что я хочу сделать.

Я хотел бы нажать на цену, изменить и перейти к другой цене

1 Ответ

0 голосов
/ 13 марта 2011

Я верю, что мой старый ответ не сработает.

Новая тактика - сохраните старый идентификатор в атрибуте на новом созданном вами входе и используйте его в обработчике успеха.

$('#priceBig').click(function() {
    var currentText = $.trim($(this).text())

    var input = $('<input />')
      .addClass('input')
      .attr('type', 'text')
      .attr('orig-id', $(this).attr('id'))
      .val(currentText)
      .bind('change', function () {
        var t = $(this);
        var price = t.val();
        var origID = t.attr('orig-id');

        $.post('<?= site_url('dish/changePicaBigPrice') ?>',{ picaID : origID, price:price},
        function(data) {
            t.remove();
            $('#' + origID).text(price).fadeIn(1000);
        },'text');
      });

    $(this).hide().before(input);
});

EDIT: исправлена ​​опечатка в var origID = t.attr ('orid-id');

РЕДАКТИРОВАТЬ: изменить picaID на origID в параметрах $ .post

...