我有一个 MVC 站点,我有一个 html 表,双击一个单元格时它将进入编辑模式,第一次它工作,下次当我在同一单元格或任何其他单元格上加倍时,它不起作用,当我在任何地方单击时,然后如果我双击它工作正常。
我怀疑单击和双击之间存在一些冲突。
$('#TableOverride tr:gt(0)').each(function () {
$(this).find('td:eq(9)').dblclick(function () {
EditCell(this, 9);
});
});
更新 :在Chrome中测试,工作正常,没有任何问题,看起来像IE 11及更早版本的浏览器问题。
function EditCell(thisCell, colNum) {
var Id;
// if the table cell is not in edit mode
if ($(thisCell).find('input').length == 0) {
if (colNum == 4 && $(thisCell).parent().parent().parent()[0].id == 'OverrideTable') {
myBlk = $(thisCell).html();
$(thisCell).html('<input type="text" data-oldvalue="' + myBlk + '" />');
$(thisCell).find('input').val(myBlk);
$(thisCell).find('input').trigger('focus');
$(thisCell).find('input').keypress(function (e) {
if (e.which == 13) {
// If Enter key is pressed, update data.
myBlk = $(this).val();
if (myBlk == '') {
$('div.errorSummary').html('my block cannot be empty!');
$('div.errorSummary').show();
} else {
Loadmyblk(myBlk, this);
LeaseOverrideObj.GetLeaseOverride());
}
});
}
试试这个,它应该可以工作,添加自定义类,例如"EditableCell",以便在文档上的dblclick事件绑定中使用。
$('#TableOverride tr:gt(0)').each(
function () {
$(this).find('td:eq(9)').removeClass('EditableCell').addClass('EditableCell');
});
});
$(document).on('dblclick', '.EditableCell', function()
{ EditCell(this, 9);
});
请注意$(document).on
不应该在任何循环中调用,它应该只在document.ready
中调用一次。
Js 小提琴
更新了小提琴链接,以演示动态添加的事件