Сетка Встроенное редактирование с JavaScript, странное поведение - PullRequest
1 голос
/ 05 августа 2010

Я сделал эту страницу счета. Существует повторитель, который генерирует таблицу. В теги td входят описания элементов счета, инкапсулированные тегами div как это:

<asp:Repeater ID="Repeater1" runat="server">
           <ItemTemplate> 
            <tr>
             <td class="griditem text">
                 <div class="invoiceDescription" id='<%# "item-" + Eval("ID") %>' value='<%# Eval("ID") %>' onclick="InvoiceItemClicked(this);">
                    <%# Eval("Description") %>
                 </div>
             </td>
             <td class="gridnumb text r">
             <%# String.Format("{0:n}", Eval("Quantity"))%>
             </td>
             <td class="gridnumb text r">
             <%# String.Format("{0:c}", Eval("UnitCost"))%>
             </td>
             <td class="gridnumb text r">
             <%# String.Format("{0:c}", Eval("Total"))%>
             </td>
            </tr>
           </ItemTemplate>
          </asp:Repeater>

Если вы видите первую строку, я вызываю javascript onclick. Функция выглядит следующим образом (использует jQuery):

function InvoiceItemClicked(elm) {
        var textbox = document.createElement('input');
        textbox.setAttribute('type', 'text');
        textbox.value = $(elm).text();
        $(elm).html(textbox);
    }

Это первый раз, когда я пытаюсь сделать что-то подобное, и это сработало в первом кадре. Он преобразует строки в текстовые поля с одинаковым набором текста в них. Но проблема в том, что при нажатии на текстовое поле (фокус) текст внутри него исчезает.

Я также буду признателен за любые другие лучшие практики для этого встроенного редактирования. Мне нужно обновить элементы через веб-сервисы и т. Д.

Заранее спасибо.

1 Ответ

0 голосов
/ 05 августа 2010

да мой плохой!

function InvoiceItemClicked(elm) {
        var b = $(elm).hasClass('invoiceDescriptionEditing');
        if(!b)
        {
            var textbox = document.createElement('input');
            textbox.setAttribute('type', 'text');
            textbox.setAttribute('id', 'txt');
            $(textbox).css('width', '550px');
            textbox.value = $(elm).text();
            $(elm).html(textbox);

            $(elm).removeClass('invoiceDescriptionEditable');
            $(elm).addClass('invoiceDescriptionEditing');
        }

    }

это хорошо! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...