2011-01-31 6 views
0

У меня есть 2 текстовых поля, один из которых называется 'title', который называется 'url'. Использование jquery в .blur() Я копирую значение «title» в значение «url», и я заменяю пробелы символами подчеркивания, но по какой-то причине он заменяет только первое пустое пространство, а не все из них: код:jquery replace not working

$("#title").blur(function(){ 
     var myval = $(this).val().replace(" ", "_"); 
     $("#url").val(myval); 
}); 

Что я делаю неправильно?

Заранее спасибо

ответ

10

Для глобальной замены, вы должны использовать регулярное выражение с g флагом:

var myval = $(this).val().replace(/ /g, "_"); 
2

Вы должны использовать регулярные выражения, чтобы найти все вхождения строки, которую вы хотите для замены (пробел, в данном случае).

$("#title").blur(function(){ 
     var myval = $(this).val().replace(/ /g, "_"); 
     $("#url").val(myval); 
}); 

«g» означает «глобальный», поэтому он будет продолжать поиск даже после первого совпадения.

1

Вот моя функция замены! Я надеюсь, вам понравится.

function myReplaceMethod(str,find,replace_with){ 
    while (str.indexOf(find) !== -1){ 
     from = str.indexOf(find); 
     to = from + find.length; 
     str = str.substr(0,from)+replace_with+str.substr(to, str.length-to); 
    } 
    return str; 
} 

Пример использования:

str = myReplaceMethod(str,"example1",""); // nothing 
str = myReplaceMethod(str,"example2","new text here"); //for new text 

Для получения дополнительной информации посетите мой блог:. http://www.phpdevblog.eu/2012-06/jquery/javascript-replace-method-not-working-properly.html

0

Лучший способ это просто использовать "в смену»

скидка = пункт .val() заменить (",", ".");

если вы введете ert 8,09, это будет преобразовано в 8,09