изменить текст для ввода и обратно в текст

0

У меня есть список продуктов, цена - обычный текст. Когда я нажимаю с ценой, я хочу заменить текст на ввод и когда я вызываю событие размытия, он обновляет данные БД и заменяет ввод по тексту.

У меня есть этот код:

<td>
    <span onclick="make_field(this, 'text', '11', '12,350.00')">12,350.00</span> €
</td>
<script>
    function make_field(el, type, id, val) {
        var el = $(el);

        el.html('<input onblur="update_db_row(params); make_el(this, \'span\', ' + id + ', \'' + val + '\', \'' + **this.value** + '\')" type=' + type + ' name=' + id + ' value="' + val.replace(',',' ').replace(',',' ').replace('.',',') + '">'); // replace 12,350.00 to 12350,00
        el.attr('onclick', '');
    }

    function make_el(el, tag_name, id, old_value, **new_value**) {
        var el = $(el);

        alert(old_value);
        alert(new_value); // undefined, how I can give current input value to function when I click outside the input?
  }
</script>

Благодарю.

  • 0
    Я думаю, что вы можете добиться этого, используя библиотеку x-editable , довольно простую в использовании и хорошо документированную.
  • 0
    Эмилио, спасибо за комментарий ... Я хочу избегать использования библиотеки, если я хочу только одну функцию. Это должна быть только эта строка.
Теги:
events
blur

1 ответ

1
Лучший ответ

Я считаю, что это то, что вы хотите: пример jsFiddle

Вы можете получить новое значение непосредственно из входного элемента следующим образом:

 function make_field(el, type, id, val) {

    var el = $(el);

    el.html('<input onblur="update_db_row(); make_el(this, \'span\', ' + id + ', \'' + val + '\')" type=' + type + ' name=' + id + ' value="' + val.replace(',', ' ').replace(',', ' ').replace('.', ',') + '">'); // replace 12,350.00 to 12350,00
    el.attr('onclick', '');


}


function make_el(el, tag_name, id, old_value) {
    var el = $(el);

    // Get the new value directly from the input.
    var new_value = el.val();

    // Set the new value on the span and remove the input box.
    el.parent().html(new_value);
    el.remove();
}

function update_db_row() {}
  • 0
    Грег: Да, это именно то, что мне нужно. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню