我让 jEditable 可以很好地使用 textarea 来编辑对象内的内容。我正在使用 jEditable 的 onblur 选项直接将 onBlur 提交给函数(而不是 url),并且所有工作都按预期工作,除非您使用例如 alt+tab 更改窗口。当我使用 alt+tab 时,看起来内容是通过实际的 http 请求提交的,而忽略了我的回调函数。
我非常基本的示例实现如下所示:
$(".editable").editable(function(content,settings){
content = content.replace(/\n/gi,"<br />");
return content;
},{
data: function(value, settings) {
return value.replace(/<br[\s\/]?>/gi, '\n');
},
type: "textarea",
onblur: "submit"
});
你可以在这里测试它:http: //jsfiddle.net/xmajox/wePp5/
我已经尝试过所有其他窗口操作:调整大小、移动等,甚至在浏览器上的选项卡之间移动都效果很好(提交数据并退出编辑模式)。
关于如何驯服它的任何想法?
更新:经过更多测试和其他人的一些合作,这似乎取决于操作系统(窗口管理器?)。它在统一的 ubuntu 12.10 上始终如一地发生,但在 mac 或 windows 上没有发生(尚未测试其他 linux 机器)。
此外,现在证明当我使用 alt-tab 时我的回调方法确实运行,但之后表单还是会被 POST。添加实时 preventDefault 似乎没有帮助。