Копирование данных из поля <input> в значение ключа JSON

464
30 июня 2017, 08:58

Здравствуйте. Как сделать так, чтобы в customerContact копировалось значение из поля E-mail?

<form class="form1" action="
https://money.yandex.ru/eshop.xml
" method="post"> 
<input required name="shopId" value="00000" type="hidden"/> 
<input required name="scid" value="00000" type="hidden"/> 
<input type='hidden' required name="sum" value="1799" > 
<input class="name" type='text' name="customerNumber" placeholder="Ф.И.О" size="64"/> 
<input class="emeil" type="email" placeholder="E-mail" name="custEmail" size="64"/> 
<input name="ym_merchant_receipt" value='{"customerContact": "+79250000000","taxSystem": 2,"items": [{"quantity": 1,"price": {"amount": 1799.00},"tax": 1,"text": "Яблоки"}]}' type="hidden"/>
</form> 

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

Answer 1

если добавить id="xxx" (иначе обращаться как $("input[name=....])) к искомому полю, то как то так?
зы: в class="emeil" тоже опечатка была

$(".email").keyup(function(){ 
   var data = JSON.parse($("#xxx").val());    
   data.customerContact = $(this).val(); 
   $("#xxx").val(JSON.stringify(data)); 
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form class="form1" action=" 
https://money.yandex.ru/eshop.xml 
" method="post">  
<input required name="shopId" value="00000" type="hidden"/>  
<input required name="scid" value="00000" type="hidden"/>  
<input type='hidden' required name="sum" value="1799" >  
<input class="name" type='text' name="customerNumber" placeholder="Ф.И.О" size="64"/>  
<input class="email" type="email" placeholder="E-mail" name="custEmail" size="64"/>  
<input id="xxx" name="ym_merchant_receipt" value='{"customerContact": "+79250000000","taxSystem": 2,"items": [{"quantity": 1,"price": {"amount": 1799.00},"tax": 1,"text": "Яблоки"}]}' type="hidden"/> 
</form>

Answer 2

Добавляем обработчик события change на поле email, И там при каждом изменении значения поля взял значение скрытого поля, преобразовал в object, Изменил значения свойства customerContact в объекте, и в конце с ново преобразовал объект в строку и поменял значение скрытого поля.

$(document).ready(function(){ 
  $('.custEmail').on('change',function(){ 
	var obj = JSON.parse($('.ym_merchant_receipt').val()); 
	obj.customerContact = $(this).val(); 
	$('.ym_merchant_receipt').val(JSON.stringify(obj)); 
        console.log($('.ym_merchant_receipt').val()); 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form class="form1" action=" 
https://money.yandex.ru/eshop.xml 
" method="post">  
<input required name="shopId" value="00000" type="hidden"/>  
<input required name="scid" value="00000" type="hidden"/>  
<input type='hidden' required name="sum" value="1799" >  
<input class="name" type='text' name="customerNumber" placeholder="Ф.И.О" size="64"/>  
<input class="emeil" type="email" placeholder="E-mail" name="custEmail" size="64"/>  
<input name="ym_merchant_receipt" value='{"customerContact": "+79250000000","taxSystem": 2,"items": [{"quantity": 1,"price": {"amount": 1799.00},"tax": 1,"text": "Яблоки"}]}' type="hidden"/> 
</form>

READ ALSO
почему когда задаю имя свойства выдает ошибку?

почему когда задаю имя свойства выдает ошибку?

Для начала у вас в самом цикле опечатка в length и i+2 вместо i+=2Динамические ключи заключайте в квадратные скобки

317
Как реализовать такую вот штуку на сайте, с авто появлением через 30 секунд? [требует правки]

Как реализовать такую вот штуку на сайте, с авто появлением через 30 секунд? [требует правки]

По какому принципу оно вообще строится, и как это можно реализовать, есть может какие-то готовые решения по этому типу, это же что-то вроде...

259
Авторизация Google OAuth &ldquo;popup_closed_by_user&rdquo;

Авторизация Google OAuth “popup_closed_by_user”

Пишу авторизацию Google OAuthИспользую этот компонент

355