0

我在这里有这段代码:

 txtName.value = txtName.value.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
txtURL.value = txtURL.value.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
txtUsage.value = txtUsage.value.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');

我将如何把它放在 jQuery 中?我已经尝试了很多东西,但它不起作用。

    txtName = $('#emoteName');
    txtURL = $('#emoteURL');
    txtUsage = $('#emoteUsage');
4

5 回答 5

2
var $txtName = $('#emoteName'),
    $txtUrl = $('#emoteURL'),
    $txtUsage = $('#emoteUsage');
$txtName.val($txtName.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
$txtURL.val($txtURL.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
$txtUsage.val($txtUsage.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));

介意看看这篇关于 jQuery 性能的特定文章!:)

这也应该很好用,而不是重复代码,只需使用您的 jQuery 对象创建一个数组并将相同的替换应用于每个对象。

var $objs = [
        $('#emoteName'),
        $('#emoteUrl'),
        $('#emoteUsage')
    ];

$.each($objs, function() {
    var $this = $(this),
        val = $this.val();
    $this.val(val.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));
});
于 2013-07-01T09:22:18.010 回答
2

尝试:

$txtName.val( $txtName.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '') );

jQuery 对象的变量名以$.

于 2013-07-01T09:22:38.410 回答
2

用于.val()jquery 对象来获取值.. 因为你的 txtName 已经是一个 jquery 对象

txtName = $('#emoteName');

你可以只使用.val()而不是value. value用于 DOM 元素

txtName.val(txtName.val().replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, ''));

对其余的做同样的事情..

于 2013-07-01T09:24:51.117 回答
2

如果您想对所有三个字段进行相同的替换,您可以这样做:

$('#emoteName, #emoteURL, #emoteUsage').val(function(i, currentVal) {
    return currentVal.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
});

jQuery 的.val()方法允许您获取或设置表单元素的值。如果你向它传递一个回调函数,该函数将为 jQuery 对象中的每个元素调用,其中当前值被传递给函数并且函数返回的任何内容都将成为新值。

于 2013-07-01T09:41:30.383 回答
1

试一试:

var val = txtName.val();
var new_val = val.replace(/(\r?\n){2,}/, '\n').replace(/^\r?\n|\r?\n$/, '');
txtName.val(new_val );
于 2013-07-01T09:22:05.000 回答