以下代码是从数据库放入textarea的文本示例。
<textarea id="inputPane" cols="80" rows="40" class="pane">
<p>
some text here...
</p>
<p>
more text here...
</p>
</textarea>
使用jQuery的.trim删除所有前导和尾随空格的实际jquery代码是什么,并且textarea显示与下面非常类似?
<textarea id="inputPane" cols="80" rows="40" class="pane">
<p>some text here...</p>
<p>more text here...</p>
</textarea>
我已经花了好几个小时没有成功尝试与.trim的不同组合
$('#inputPane')jQuery.trim(string);
答案 0 :(得分:7)
您可以尝试这样的事情:
jQuery(function($) {
var pane = $('#inputPane');
pane.val($.trim(pane.val()).replace(/\s*[\r\n]+\s*/g, '\n')
.replace(/(<[^\/][^>]*>)\s*/g, '$1')
.replace(/\s*(<\/[^>]+>)/g, '$1'));
});
结果如下:
<p>some text here...</p>
<p>more text here...</p>
虽然这可能不是防弹的,但它应该比使用textarea的HTML值创建元素更快/更有效。
答案 1 :(得分:3)
试试这个:
var $input = $('#inputPane');
var $container = $('<div>').html( $input.val() );
$('*', $container).text( function(i,txt) {
return $.trim( txt );
});
$input.val( $container.html() );
它将textarea
的内容转换为元素,遍历它们并修剪内容,然后将生成的HTML插回到textarea
。
编辑:已修改为使用.val()
代替.text()
,如@bobince所述
答案 2 :(得分:1)
jQuery.trim()
将从整个字符串中删除前导和尾随空格 - 在这种情况下,在第一个<p>
之前和最后一个</p>
之后。你想要更复杂的东西,即删除某些标签之间的空格。这不一定容易,但可以(也许!)用正则表达式完成,例如:
// assuming val is the textarea contents:
val = val.replace(/>\s*</, '><').replace(/\s+$/, '');
免责声明:这只是很快就放在一起,可能无法涵盖所有情况。
答案 3 :(得分:1)
获取值,修剪值,设置值:
var value = $('#inputPane').val();
value = $.trim(value);
$('#inputPane').val(value);
或者在一行中:
$('#inputPane').val($.trim($('#inputPane').val()));
答案 4 :(得分:1)
我就是这样做的(demo):
$('.pane').val(function(i,v){
return v.replace(/\s+/g,' ').replace(/>(\s)</g,'>\n<');
});
答案 5 :(得分:1)
您不需要jQuery来修剪textarea中的前导/尾随空格。你需要在一行编码
在:
<textarea id="inputPane" cols="80" rows="40" class="pane">
<p>some text here...</p>
<p>more text here...</p>
</textarea>
后:
<textarea id="inputPane" cols="80" rows="40" class="pane"><p>some text here...</p></textarea>