Задать вопрос
blackseabreathe
@blackseabreathe
brackets

Вставить в input значение введенное ранее?

Есть поля

<input type="text" name="name" id="name">
<input type="text" name="surname" id="surname">


Также есть три radio кнопки

<input type="radio" name="shippingMethod" value="sdek" class="shippingMethod">
<input type="radio" name="shippingMethod" value="rupost" class="shippingMethod">
<input type="radio" name="shippingMethod" value="pickup" class="shippingMethod">


Пытаюсь сделать так чтобы если выбран pickup, то в поля name и surname вставить текст "самовывоз" и, при этом, сохранить введенные данные до выбора pickup чтобы если дальше будет выбран не pickup, то вставить в name и surname ранее введенные данные.

$(document).on('change', '.shippingMethod', function(){

if($(this).val() == 'pickup'){

var name = $(document).find('#name').val(), //переменная со значением до того как установить значение "самовывоз"
surname = $(document).find('#surname').val(), //переменная со значением до того как установить значение "самовывоз"

$(document).find('#name, #surname').val('Самовывоз');
}

else{

$(document).find('#name').val(name);
$(document).find('#surname').val(surname);


}

)};


Проблема - не вставляются ранее введенные значения (var name, surname) если после клика на pickup кликаю на кнопку .shippingMethod с другим значением (sdek/rupost). Поля тупо очищаются (или вставляются пустые значения).
  • Вопрос задан
  • 393 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
smilingcheater
@smilingcheater
Объявите переменные name, surname до навешивания обработчика, т.е. напишите вот так
var name, surname;

$(document).on('change', '.shippingMethod', function () {
    if ($(this).val() == 'pickup') {
        name = $(document).find('#name').val();
        surname = $(document).find('#surname').val();
        $('#name, #surname').val('Самовывоз');
    } else {
        $('#name').val(name);
        $('#surname').val(surname);
    }
});
Ответ написан
Комментировать
blackseabreathe
@blackseabreathe Автор вопроса
brackets
Такое решение предложили на stackOverflow

$(".fio").keyup(function(){
  $(this).data('value', $(this).val() );
});

$(".shippingMethod").change(function(){
  let v = $(this).val();
  console.log(v);
  
  if(v == 'pickup'){
    $(".fio").val("самовывоз")
  }
  else {
    $(".fio").each(function(){
       $(this).val( $(this).data('value') );
    });
  }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы