2010-04-09 46 views

回答

18

你實際上可以傳遞一個函數來修剪你要編輯的字符串。在您的設置中使用此設置:

data : function(string) {return $.trim(string)}, 
submit: "Save" 
+0

太棒了。這非常有用。 – Jake 2012-12-21 19:31:00

+1

說真的。我將它添加到了我的基礎對象中,使得我所有的可用對象都可用,現在我可以根據需要設置頁面的格式。真的很有用... – Jake 2012-12-21 19:34:05

+0

這真是一個很好的答案!謝謝。 – 2013-02-08 13:40:40

1

嗯,這很奇怪。 Jeditable沒有遇到這個問題。

哦,jQuery有一個微調功能:

$.trim(" hello, how are you? "); 
12

找到了原因。它是瘋了!

就地編輯將插入空間周圍的文字,如果你的HTML像下面

<div id="inplace_edit_this"> 
    This is some text that will be edited in-place. 
</div> 

,它會周圍文本中沒有插入空間,如果你的HTML看起來像這樣

<div id="inplace_edit_this">This is some text that will be edited in-place.</div> 

我想知道是什麼原因造成的這可能是因爲瀏覽器和Javascript解釋HTML的方式不同。

+2

...不是問題的固定的根本原因,Symmitchry的建議安裝固定好 – dmytrivv 2011-06-26 10:18:19

+1

...但是這_is_的答案,如果你不會或不能,更改jEditable.js – w4ik 2011-08-15 17:59:20

+0

我同意dmytrivv。問題從未指定jEditable不能更改。我嘗試了上面的解決方案,我仍然在開始時獲得空間。 Johan Bjorling和Symmitchry的解決方案始終工作。 – ksindi 2011-11-14 18:48:33

8

這可能是一箇舊消息,但我面臨着類似的問題:我不知道爲什麼,但保存編輯後的文本輸入後,下次點擊它時,11個空格(每次)都是插入可編輯文本之前。

經過大量的試驗和錯誤,我終於通過編輯線〜239在jeditable.js文件解決了這個問題:

content.apply(form, [input_content, settings, self]); 

,取而代之的是:

content.apply(form, [$.trim(input_content), settings, self]); 

(每Baloneysammitch的建議)

請注意,我幾乎不知道我在做什麼,但這似乎工作!也許有人比我更技能可以解釋那些額外的11個空間可能來自哪裏...

+0

謝謝,這爲我解決了同樣的問題! 如果你(或任何其他人)遇到同樣的問題,在self.revert中找到的預編輯文本,我對260行進行了相同的更改,$ .trim()的self.revert值是設置爲,並且修復了我的原始值空白問題。 – Aaron 2012-05-11 10:59:29

+1

您應該真的使用Greg DeVore的方法:http://stackoverflow.com/a/9087222/76672不更新可jeditable核心文件。 – Jake 2012-12-21 19:35:21

1

這是一段時間以來,任何人回答這個職位,但我遇到了同樣的問題,並認爲我會添加我的兩個美分值。這個問題只發生在Firefox和safari中。 IE和Chrome似乎沒有這個問題。

我嘗試了Symmitchry在第239行的$.trim()的建議,但這對我無效。所以我做了一些回溯和想通了,這個問題首先出現的圍繞線176線:

self.revert = $(self).html();

由於這是一個jQuery的電話,這讓我不知道是否有與jQuery的是一個問題與上述瀏覽器進行交互。不知道...

我發現通過添加一個$.trim()在這一點上,事情工作正如我所料。

我確實發現,由於Chirantan的做法,html的佈局如果空間在那裏或不在,會產生差異。

3

我在我的應用程序中用JEditable 1.7.1修復了這個問題。該解決方案實際上與Symmitchry的解決方案相同。

從行204開始,有一個代碼塊決定了JEditable應該如何加載其數據。

/* set input content via POST, GET, given data or existing value */ 
var input_content; 

if (settings.loadurl) { 
    ... 
} else if (settings.data) { 
    ... 
} else { 
    ... 
} 
content.apply(form, [input_content, settings, self]); 

加入jQuery的修剪功能(在我的版本排239)的最後一行之前),所以您將獲得:

/* set input content via POST, GET, given data or existing value */ 
var input_content; 

if (settings.loadurl) { 
    ... 
} else if (settings.data) { 
    ... 
} else { 
    ... 
} 

try { 
    input_content = input_content.trim(); 
} 
catch(e) { 
    // DO NOTHING 
} 

content.apply(form, [input_content, settings, self]); 

我之所以把它放在一個try-catch是因爲當你使用帶有textarea的JEditable或輸入文本input_content基本上是一個字符串。當你使用一個select時,input_content是一個對象,並且不會很好地被修剪。

這樣做可能更美觀,而不是使用try-catch,但它可以完成任務。

0

如果格式設置爲空格分配,則會發生這種情況。 jEditable尊重它,並且不會修改你的內容。例如,在VS IDE中,自動格式會產生巨大的空白,其中渲染HTML是很好的。

如果使用jQuery的調用jEditable如果你想OT確保前剛剛修剪DOM是沒有空白的任何地方

$('#BatchTable tbody td').each(function() { 
     $(this).html($.trim($(this).html())); 
}); 

oTable = $('#BatchTable').dataTable({ 
     "bJQueryUI": true 
}); 
0

在我的情況的解決方法是刪除390線的</input>文件 jQuery的。 jeditable.js。 前行:var input = $('<input type="hidden"></input>'); 熱線,工作對我來說:var input = $('<input type="hidden">');