选择Jeditable选择框时,IE中的jQuery错误

时间:2010-09-03 12:29:36

标签: javascript jquery

我正在制作一个Intranet应用程序并尝试使用jQuery的Jeditable插件。以下函数使一个元素(在本例中为td元素)可单击,然后将其变为可编辑(在这种情况下也可选择,因为它是一个选择框)并检查一个键监听器以查看是否已按下tab或shift-tab激活下一个或上一个可编辑区域。

 $('.editBool').editable(function(value, settings){
     // show and hide clickable links. shouldn't be important to problem,
     // but i don't know at this point
     $(this).parent().find('a.editbutton').hide();
     $(this).parent().find('a.savebutton').show();
     $(this).parent().addClass('notSaved');
     // sets a warning if they leave the page without saving edited data
     window.onbeforeunload = savePage;
     // needed for editable to work (apparently).
     return(value);
 }, {
     data   : "{'Yes':'Yes','No':'No'}",
     type    : 'select',
     onblur : 'submit',
 callback : function(value, settings) {
     // kp is the keypress, sp is a bool checking for the shift key
    if (kp == 9){if (sp){$(this).prev().click();}else{$(this).next().click();}kp = null;}
 }
});

如果我使用这样的代码选中Jeditable框,我就没有问题,直到我在Internet Explorer(7和8)中移动鼠标。如果当前选定的元素是一个选择框(使用上面的代码),当鼠标移动时,选择框将失去焦点并触发onb​​lur事件。如果鼠标没有移动,焦点将保持在选择框中。

如果我使用游标尝试选择其他值,焦点也会丢失,并且会再次触发onb​​lur事件。

这种情况不会发生在我设置为Jeditable(textarea,autogrow textarea,蒙面文本)的任何其他元素上,仅适用于选择,并且仅在IE 7-8中(也可能是6,但我不是'不再关心6)。它的工作原理我预计它可以在FF3,Chrome 4 +,Opera 10中工作(鼠标移动时焦点停留在选择框上,键盘箭头命令可以选择选项)。

有没有人对为什么会发生这种情况有任何想法?

感谢。


澄清时间:当使用next()函数从jeditable启用的td设置更改为text,textedit或autogrow on click,到jeditable启用的td设置为on时,会发生此错误 一个选择框。从文本到文本或选择文本时不会发生

更多细节时间:在jeditable jQuery插件中调用focus()时出现错误,第253行:

$(':input:visible:enabled:first', form).focus();

似乎在此行之后移动鼠标,会导致选择框失去焦点。这让我疯了,因为我想解决这个问题,我一直在以任何方式攻击它。我通过交换前一行来解决这个奇怪的问题:

setTimeout(function() { $(':input:visible:enabled:first', form).focus();}, 1000);

在创建的选择框和焦点设置之间的第二个过程中,如果鼠标移动,一旦设置,焦点就不会丢失。如果在设置焦点之前鼠标没有移动,当它移动时,焦点会丢失。这似乎是完全结果和坚果。我一直在努力解决这个问题,并找不到解决方案。非常感谢任何帮助。

谢谢,

0 个答案:

没有答案