2010-04-09 63 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">');