JQuery заменить не работает - PullRequest
0 голосов
/ 31 января 2011

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

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

Что я делаю не так?

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

Ответы [ 4 ]

11 голосов
/ 31 января 2011

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

var myval = $(this).val().replace(/ /g, "_");
2 голосов
/ 31 января 2011

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

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

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

1 голос
/ 10 июня 2012

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

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 голосов
/ 27 декабря 2013

Лучше всего просто использовать "вместо".

discount = item.val().replace(",", ".");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...