3

我有一个asp:Listview我已经填充了数据。单击一行时,其中一个单元格将table替换为asp:TextBox以允许编辑所选值并将焦点设置在文本框上。到目前为止,一切都很好。

当我不点击时,我可以按预期编辑值。但是,当我再次单击该input控件时,其内容消失了。

$(document).ready(function () {
    $('tr[id*="itemRow"]').click(function () {
        $clickedRow = $(this);
        var invNr = $clickedRow.find('span[id$="InvoiceNumber"]').text(),
            newInvNr,
            oldHtml = $clickedRow.find('span[id$="InvoiceNumber"]').html();
        $clickedRow.find('span[id$="InvoiceNumber"]').html('<asp:TextBox ID="editInvNr" runat="server"></asp:TextBox>');
        $clickedRow.find('input[id$="editInvNr"]').val(invNr).focus().focusout(function () {
            //capture new invoice nr
            newInvNr = $(this).val();
            //switch textbox back to span using new invoice nr
            $clickedRow.find('span[id$="InvoiceNumber"]').html(newInvNr);
            //check if anything changed, if so update it in the db
            if (newInvNr != invNr) {
                //update new value to db
            }
        });
    });
});

此处的 jsfiddle中,我已将插入的 an 替换asp:TextBox为常规的 htmlinput元素,结果是相同的。您可以单击最后一列中的“1”以查看我看到的内容。我觉得我忽略了文本框控件的一些内置行为,如果我忽略了,那么我为我缺乏知识而道歉。

无论如何,我想要一些关于如何防止这种情况发生的指示。非常感激

4

1 回答 1

1

当您检测到文本框中的点击时退出该功能:

if($clickedRow.find('input[id$="editInvNr"]').length > 0)
    return;
于 2013-05-24T12:49:27.460 回答