У меня есть 2 текстовых поля: одно называется «заголовок», другое - «URL».Используя jquery для .blur(), я копирую значение title в значение url и заменяю пробелы подчеркиванием, но по какой-то причине он заменяет только первое, а не все пробелы:Вот код:
.blur()
$("#title").blur(function(){ var myval = $(this).val().replace(" ", "_"); $("#url").val(myval); });
Что я делаю не так?
Заранее спасибо
Чтобы выполнить глобальную замену, вам нужно использовать регулярное выражение с флагом g:
g
var myval = $(this).val().replace(/ /g, "_");
Вам нужно использовать регулярные выражения, чтобы найти ВСЕ вхождения строки, которую вы хотите заменить (в данном случае пробел).
$("#title").blur(function(){ var myval = $(this).val().replace(/ /g, "_"); $("#url").val(myval); });
«g» означает «глобальный», поэтому он сохранитпоиск даже после первого совпадения.
Вот моя функция замены! Я надеюсь, вам понравится.
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
Лучше всего просто использовать "вместо".
discount = item.val().replace(",", ".");
, если вы вставите 8,09, это будет преобразовано в 8,09