как заменить каждый символ другим символом в Jquery

#javascript #jquery #string #replace

#javascript #jquery #строка #заменить

Вопрос:

Я пытаюсь создать поле ввода textarea, которое автоматически заменяет определенные символы на разные символы; пример: когда пользователь вводит символ «a», он должен быть автоматически заменен символом «o». Я новичок в jquery, поэтому не могли бы вы рассказать, что не так со следующим кодом:

 $(function() {
    $('#myTextBox').keyup(function() {
        $("a").replaceWith( "o" );
        $("z").replaceWith( "N" );
        $("y").replaceWith( "M" );
        $("p").replaceWith( "f" );
        $("v").replaceWith( "K" );
        $("b").replaceWith( "P" );
    });
});
  

Я ценю вашу помощь, спасибо

Редактировать:

спасибо всем, следующее сработало, как ожидалось:

 $(function() {
    $('#myTextBox').keyup(function() {

        $(this).val($(this).val().replace(/a/g, "o"));

    });
});
  

Комментарии:

1. Селектор jquery предназначен для выбора элементов dom. Не выбирать значение из текстового поля. вы должны использовать val() функцию для получения значений

2. RE: «это правильно?» Ну, вы пробовали это в своем приложении?

3. Я изменил код используемой функции val (), но не уверен, правильно ли это..

Ответ №1:

Прежде всего $("a") фактически нацелен на все элементы привязки на странице, поэтому я предполагаю, что это не то, что вы хотите (а других даже не существует, кроме p , поэтому ваш селектор ничего не вернет). Во-вторых, вы можете использовать регулярные выражения для выполнения вашей замены без какого-либо специального кода jQuery.

Вместо:

 $("a").replaceWith( "o" );
  

Попробуйте:

 $(this).val($(this).val().replace(/a/g, "o"));
  

Чтобы разбить это:

 var oldValue = $(this).val();
var newValue = oldValue.replace(/a/g, "o");

// Set to new value
$(this).val(newValue);
  

Комментарии:

1. Это нормально для данного примера, но это не сработает для решения с транзитивными заменами без тщательного выполнения (и это вообще не сработает, если в конце оно будет циклическим). Представьте, что произойдет, если у вас также есть правило замены для «o», но вы сначала выполняете a->o замену, и вы поймете, что я имею в виду.

2. @Platinum, хорошая мысль. В этом случае работает, но комментарий отличный.

Ответ №2:

http://jsfiddle.net/2fYdT/69/

 $(document).ready(function() {
    $(".normal").each(function() {
        var text = $(this).html();
        text = text.replace(/"/g, '');
        $(this).html(text);
    });
});
  

для чего-то вроде этого:

 <div class="normal">Lorem "ipsum "dolor"</div>
  

Результат:

 <div class="normal">Lorem ipsum dolor</div>