2013-07-01 28 views
0

我有這樣的代碼在這裏替換功能?我嘗試了很多東西,但它不起作用。使用jQuery

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

告訴我們!!你是什​​麼txtName,txtURL ..是? – bipen

+0

你去了先生。 – ECMAScript

+3

相關:http://www.doxdesk.com/img/updates/20091116-so-large.gif – PeeHaa

回答

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$/, '')); 

心靈看看這個特殊的article關於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$/, '')); 
}); 
1

嘗試之一:

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

嘗試:

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

這也是常見的實踐與jQuery的對象$開始的變量名。

2

使用.val()爲jQuery對象來獲取值..因爲你的txtName的已經是一個jQuery對象

txtName = $('#emoteName'); 

你可以使用.val(),而不是valuevalue是DOM元素

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

爲休息做同樣的..

2

如果你想要做的所有三個領域相同的替換,你可以這樣做:

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

jQuery's .val() method讓您獲取或設置表單元素的值。如果pass it a callback function該函數將被調用jQuery對象中的每個元素,其中當前值傳遞給該函數,並且該函數返回的任何變爲新值。