2016-07-16 3 views
1

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

Во-первых, все текстовые поля, которые я хочу заменить, имеют свойство, называемое lang="en".

Так я использовал JQuery .each() функцию, чтобы собрать все из них в массив делает следующее:

$(document).ready(function() { 
    $("[lang=en]").each(function(){ 
    var textArray = $(this).text(); 
    }); 
}); 

В то время как переменная TextArray проводит сбор необходимых текстовых полей, которые будут заменены на другой переменной. Пример:

var replaceText = textArray.replace("Hello", "Hi").replace("Good afternoon!", "Hi!"); 

В то время как внутри каждой функции я могу сделать $(this).text(replaceText) применить заменить текст, но я хочу сделать это с помощью кнопки мыши (button1), а другая кнопка (button2) изменит его обратно.

Внутри кнопки onclick event (внутри каждой функции цикла) $["lang=en"].text(replaceText); не имеет правильного эффекта.

ответ

1
<input type="button" id="convert" value="Convert"/> 
<input type="button" id="convert-back" value="Convert Back"/> 

#convert преобразует текст во всех входных файлов, который имеет свойство lang=en. #convert-back кнопка сделаю обратный. Дайте мне знать, если он работает для вас


$(document).ready(function() { 

    $("#convert").click(function() { 

     $("input:lang(en)").each(function() { 

      var textArray = $(this).val(); 
      var replaceText = textArray.replace("Hello", "Hi").replace("Good afternoon!", "Hi!"); 
      $(this).val(replaceText) 
     }); 
    }); 

    $("#convert-back").click(function() { 

     $("input:lang(en)").each(function() { 

      var textArray = $(this).val(); 
      var replaceText = textArray.replace("Hi", "Hello").replace("Hi!", "Good afternoon!"); 
      $(this).val(replaceText) 
     }); 
    }); 

}); 

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

HTML Часть

<input type="text" lang="en" value="Hello" alt="Hello, stack"/> 
<input type="text" lang="en" value="Hello" alt="Hello, over"/> 
<input type="text" lang="en" value="Hello" alt="Hello, flow"/> 
<input type="text" lang="en" value="Hello" alt="Hello, stack"/> 
<input type="text" lang="en" value="Hello" alt="Hello, over"/> 

<input type="button" id="convert" value="Convert"/> 

Jquery Часть

$(document).ready(function() { 

    $("#convert").click(function() { 

     $("input:lang(en)").each(function() { 

      var textArray = $(this).val(); 
      var newArray = $(this).attr("alt"); 

      $(this).val(newArray); 
      $(this).attr("alt", textArray); 
     }); 

     if ($(this).val() == "Convert") { $(this).val("Convert back"); } 

     else { $(this).val("Convert"); } 
    }); 

}); 

Сохранено старое значение в alt тег окна ввода для замены снова. Дайте мне знать, если это вам поможет.

+0

Я действительно сделал это так, но не существует способа сделать «обратный возврат» без замены значений вместо замены? У меня довольно длинный список .replace. Как хранилище по умолчанию где-то в разных функциях? –

+0

Мы должны хранить старое значение где-то, как в скрытом поле, для повторного получения. –

+0

Отредактированный мой ответ, проверьте и дайте мне знать, если вы ищете что-то вроде этого –