JSFiddle - React, Tailwind, and code Playground
HTML
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><form action="https://demomoney.yandex.ru/eshop.xml" method="post" onsubmit="formatReceipt(this);return false;">
<input required="" name="shopId" value="72491" type="hidden">
<input required="" name="scid" value="541855" type="hidden">
<input required="" name="sum" value="1246.47" type="hidden">
<input required="" name="customerNumber" value="оплата кошельком, когда пользователь не авторизован" type="hidden">
<input required="" name="paymentType" value="PC" type="hidden">
<input required="" name="customerContact" value="" placeholder="Укажите телефон +7NNNxxxXXxx или электронный адрес для получения чека" size="72"><br>
<input name="ym_merchant_receipt" value="{"customerContact": "",
"taxSystem": 1,
"items":[
{"quantity": 1.154,"price": {"amount": 300.23},"tax": 1,"text": "Зеленый чай \"Юн Ву\", кг."},
{"quantity": 3,"price": {"amount": 200.00},"tax": 3,"text": "Кружка для чая, шт., скидка 10%"},
{"quantity": 0.3,"price": {"amount": 1000.00},"tax": 3,"text": "Предоплата 30%, настольная игра \"Tea Time\""},
{"quantity": 1,"price": {"amount": 0.00},"tax": 1,"text": "Бесплатная доставка"}
]}" type="hidden">
<input type="submit" value="test-fz-54-with-dynamic-customerContact">
</form>
<script>
var validateContact = function(value) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/,
phoneReg = /^\+7[0-9]{10,11}/;
isEmail = value.match(emailReg);
isPhone = value.match(phoneReg);
...
JavaScript
document.forms[0].querySelector('input[name="customerNumber"]').addEventListener('input',function(){
let obj = JSON.parse(document.forms[0].querySelector('input[name="ym_merchant_receipt"]').value);
obj.customerContact=this.value;
document.forms[0].querySelector('input[name="ym_merchant_receipt"]').value=JSON.stringify(obj);
});
console.log(JSON.parse(document.forms[0].querySelector('input[name="ym_merchant_receipt"]').value).customerContact);