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/
他のすべてのウィンドウ操作を試しました。サイズ変更、移動など、ブラウザのタブ間を移動することもできます(データを送信して編集モードを終了します)。
これをどのように飼いならすかについてのアイデアはありますか?
更新:さらにいくつかのテストと他の人々からのいくつかの協力の後、これはOS(ウィンドウマネージャー?)に依存しているようです。これは、ubuntu 12.10で統一されて一貫して発生しますが、MacまたはWindowsでは発生しません(他のLinuxボックスはテストされていません)。
また、alt-tabを使用するとコールバックメソッドが実行されることが証明されましたが、フォームは後でPOSTされます。ライブのpreventDefaultを追加しても効果がないようです。