2013-03-11 17 views
-1

我慢慢地失望了,最后的神经迷了路。 我有一个表中的元素。如果我点击这个元素,我会得到一个文本框,如果按下回车键,文本框中的值将被一个php脚本处理。到目前为止,它的工作完美,但... 现在我需要,如果我点击框外,最好说另一个元素,相同的弹出窗口应该出现(你需要改变blabla)作为行动时,我按下输入按钮。 我尝试着重点,模糊,onchange等,但IE浏览器立即触发弹出窗口,所以我只是没有机会在文本框中输入任何东西! 这里我的代码只用输入动作做工不错(回车键):IE8发生意外动作(javascript)(更改后的文本框动作不起作用)

function modify(value, item_ID, attr_NAME, obj_name){ 
    $('.ajax').html($('.ajax_input').val()); 
    $('.ajax').removeClass('ajax'); 
    $(value).addClass('ajax'); 
    $(value).html(
      '<input id="editbox" size="' + $(value).text().length 
        + '" type="text" value="' + $(value).text() 
        + '" onkeydown="confirmAction(this.value, ' + item_id 
        + ", '" + attr_name + "'" + ", '" + obj_name + "'" + ')">'); 
    $('#editbox').focus(); 
} 

得到它的工作:

$('.ajax').html($('.ajax input').val()); 
    $('.ajax').removeClass('ajax'); 
    $(value).addClass('ajax'); 
    $(value).html(
      '<input id="editbox"' + ' type="text" value="' + $(value).text() + '"/>'); 
    $('#editbox').focus(); 

    $('#editbox').keydown(function(event) { 
     if (event.which == 13) { 
      $(document).attr('helpAttr', false); 
      confirmAction(this.value, item_id, attr_name, obj_name); 
     } 
    }); 
    $('#editbox').blur(
      function() { 
       if ($(document).attr('helpAttr') 
         || ($(document).attr('helpAttr') == undefined)) { 
        confirmAction(this.value, item_id, attr_name, obj_name); 
       } else { 
        $(document).attr('helpAttr', true); 
       } 
      }); 
+0

您是否希望事件仅在按下ENTER时触发,以便输入值?因为现在它会触发任何键。 – zeroflagL 2013-03-11 17:53:06

+0

我需要输入一个事件,如果我点击其他元素或仅仅在外部 – x4k3p 2013-03-11 17:55:05

+0

我明白,但你想能够在文本框中输入一个值,是否正确? – zeroflagL 2013-03-11 17:57:15

回答

1

此处理回车键:

$('#editbox').keydown(function(event) { 
    if (event.which == 13) { 
    confirmAction(...); 
} 
} 

这处理外部点击:

$('#editbox').blur(function() { 
    confirmAction(...); 
} 
+0

很好,但是有一个问题。他们一起被解雇。我在某个地方犯了什么错误吗? – x4k3p 2013-03-11 18:18:02

+0

在这种情况下,在keydown处理程序中的'confirmAction(...);'之前添加'event.preventDefault()'或者'event.stopPropagation()'。第一个应该就够了。 – zeroflagL 2013-03-11 18:22:47

+0

非常感谢你! – x4k3p 2013-03-11 18:24:05