очень легко пример:
<input type="text" value='{"customerContact":"test"}' id="testVal">
<script>
jQuery(document).ready(function ($) {
var data = JSON.parse($('#testVal').val());
data.customerContact = 'лала';
$('#testVal').val(JSON.stringify(data));
});
</script>
Все бы хорошо, но как теперь сделать тоже самое для нескольких параметров?
Вот готовая форма:
<div class="oplata2">
<div class="sppb-row-container">
<form action="
https://money.yandex.ru/eshop.xml" method="post" target="_blank">
<div class="sppb-col-md-3 pull-left" style="padding-bottom:2%;padding-left:0;">
Тип взноса (<font color="red">*</font>):<br>
<select style="width:98%;" name="sum" >
<option value="1350">Марафон 1 350 руб.</option>
<option value="1080">Полумарафон 1 080 руб.</option>
</select>
</div>
<div class="sppb-col-md-3 pull-left"style="padding-bottom:2%;padding-left:0;">
Ваш номер телефона (<font color="red">*</font>):<br>
<input style="width:98%;height: 34px;" required name="cps_phone" value="" placeholder=" Укажите мобильный телефон..." id="tel" size="64"/>
<script>
window.addEventListener("DOMContentLoaded", function() {
function setCursorPosition(pos, elem) {
elem.focus();
if (elem.setSelectionRange) elem.setSelectionRange(pos, pos);
else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd("character", pos);
range.moveStart("character", pos);
range.select()
}
}
function mask(event) {
var matrix = "+7 (___) ___ ____",
i = 0,
def = matrix.replace(/\D/g, ""),
val = this.value.replace(/\D/g, "");
if (def.length >= val.length) val = def;
this.value = matrix.replace(/./g, function(a) {
return /[_\d]/.test(a) && i < val.length ? val.charAt(i++) : i >= val.length ? "" : a
});
if (event.type == "blur") {
if (this.value.length == 2) this.value = ""
} else setCursorPosition(this.value.length, this)
};
var input = document.querySelector("#tel");
input.addEventListener("input", mask, false);
input.addEventListener("focus", mask, false);
input.addEventListener("blur", mask, false);
});
</script>
</div>
<div class="sppb-col-md-3 pull-left" style="padding-bottom:2%;padding-left:0;">
Ф.И.О. участника (<font color="red">*</font>):<br>
<input style="width:98%;height: 34px;" required name="custName" placeholder=" Укажите Ф.И.О. ..." value="" size="64"/>
</div>
<div class="sppb-col-md-3 pull-left" style="padding-bottom:2%;padding-left:0;">
Ваш e-mail (<font color="red">*</font>):<br>
<input style="width:98%;height: 34px;" required name="cps_email" placeholder=" Ваш e-mail ..." value="" size="64"/>
</div>
</div>
<div style="padding-bottom:2%;text-align:center;display: inline-block;width:100%;"><input type="checkbox" disabled checked> Разрешаю обработку персональной информации в соответствии с Федеральным законом РФ от 27.07.2006 N 152-ФЗ "О персональных данных"</div>
<input name="ym_merchant_receipt" value='{"customerContact": ,"taxSystem": 1, "items":[{"quantity": 1, "price": {"amount": 300.23}, "tax": 4,"text": "Оплата за участие в марафоне"}]}'
type="hidden"/>
<div style="text-align:center;">
<button class="btn2" type="submit">ОПЛАТИТЬ ВЗНОС</button>
</div>
</form>
</div>
В ym_merchant_receipt надо чтобы в после "customerContact": вставлялись данные, которые ввели в поле cps_phone т.е. номер телефона, а дальше сложнее:
в примере видно что отправляется информация о товарах, цене, скидке - надо чтобы товары (их 2 всего : <option value="1350">Марафон 1 350 руб.</option> и <option value="1080">Полумарафон 1 080 руб.</option>) взависимости от выбранного тоже автоматом проставлялись в ym_merchant_receipt