редактировать на месте - PullRequest
0 голосов
/ 21 июля 2009

У меня есть такая таблица

<tr>
    <td>No.</td>
    <td>Username</td>
    <td>Password</td>
    <td>Valid Until</td>
    <td>Delete</td>
    <td>Edit</td>
</tr>
<tr>
    <td>1</td>
    <td id="1">
              <div class="1u" style="display: none;">Username</div>
              <input type="text" class="inputTxt" value="Username" style="display: block;"/>
            </td>
    <td id="1">
              <div class="1p" style="display: none;">Password</div>
              <input type="text" class="inputTxt" value="Password" style="display: block;"/></td>
    <td>18 Jul 09</td>
    <td><button value="1" class="deleteThis">x</button></td>
    <td class="editRow">Edit</td>
</tr>

Когда нажата кнопка «Изменить», я запускаю эту функцию, она заменяет текст на поле ввода, поэтому я хочу отменить это обратно к тексту, когда в другом месте щелчок вместо сохранения.

        $('.editRow').click(function() {
        var row = $(this).parent('tr');

        row.find('.1u').slideUp('fast');
        row.find('.1p').slideUp('fast');
        row.find('.inputTxt').slideDown('fast');

    }).blur(function() { 
        row.find('.inputTxt').slideUp('fast');
        row.find('.1u').slideDown('fast');
        row.find('.1p').slideDown('fast');
    });

с этой функцией текст меняется на поля ввода, но поля ввода не изменяются обратно на текст, когда я щелкаю где-то еще.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 июля 2009

Есть хороший плагин для этого

0 голосов
/ 21 июля 2009

Только что отредактировал мою функцию, потому что плагин плохо подходил для моего приложения

        $('.editRow').live('click', function() {
            var row = $(this).parent('td').parent('tr');
            row.find('.1u').slideUp('fast');
            row.find('.1p').slideUp('fast');
            row.find('.inputTxt').slideDown('fast');
            $(this).parent('td').empty().append('<a href=# class=cancel>Cancel</a> / <a href=# class=save>Save</a>');
    });
0 голосов
/ 21 июля 2009

Ваше размытие применяется к кнопке (td.editRow), но не применяется к полям ввода. Я думаю, что вы должны отделить код, и он должен работать.

        $('.editRow').click(function() {
                var row = $(this).parent('tr');

                row.find('.1u').slideUp('fast');
                row.find('.1p').slideUp('fast');
                row.find('.inputTxt')
                    .slideDown('fast')
                    .blur(function() { 
                        row.find('.inputTxt').slideUp('fast');
                        row.find('.1u').slideDown('fast');
                        row.find('.1p').slideDown('fast');
                    });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...