Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Очень нужна помощь с input и value (https://javascript.ru/forum/misc/74042-ochen-nuzhna-pomoshh-s-input-i-value.html)

falin 07.06.2018 16:14

Очень нужна помощь с input и value
 
Ребята, прошу помощи!
Есть набор полей в коде платежа для html, вроде таких:
<input name="PurchaseDesc" type="text" required="" /> № Договора (цифрами)<br />
            <input name="PurchaseAmt" type="number" value="0" min="0" max="20000" step="10" /> Сумма оплаты<br />
           <input name="MerchantID" type="hidden" value=
            "12345678910" /> 
           <input name="CardholderName" type="hidden" value="Y" /> 
           <input name="Email" type="hidden" value="Y" /> 
           <input name="Phone" type="hidden" value="Y" />


И вот незадача! Нужно сделать еще два поля "Ext1" и "Ext2", которые будут по сути логом.
У этих двух полей должна быть следующая структура:
<input name="Ext1" type="hidden"
value="merchant_id:12345678910,external_id:222222222,total:799.0,email: [email]user@domen.ru[/email],phone: 98882223322,sno:usn_income_outcome; payments_sum:799.0, payments_type:1"/>
            <input name="Ext2" type="hidden" value="sum:799.0,tax:none,tax_sum:0.00,name:thing1,price:799.0,quantity:1.0"/>


То есть нужно в эти два поля через запятую проставить как переменные параметры из полей выше, типа Email, Phone и пр., так и константы типа налогов tax, tax_sum.
Пытаюсь придумать что-то с CopyValueTo, но получается только вставлять какое-то одно из значений, а не множество.
Также подчеркиваю, возможен только чистый html код без всяких php и пр.

Nexus 07.06.2018 16:19

У вас названия полей в camel case, а в скрытые инпуты вы хотите видеть их уже в snake case.
Не лучше ли записывать в hidden input названия полей "как есть"?

j0hnik 07.06.2018 16:20

Чистый HTML такие задачи не решает, JS можно использовать?

Nexus 07.06.2018 16:23

j0hnik, если js не разрешен, то зачем вообще тогда писать на js форуме? )

function insertDataTo(name, data) {
    document.querySelector('[name="' + name + '"]').value = Object.keys(data).reduce(function(res, key) {
        return res.push(key + ':' + data[key]), res;
    }, []).join(',');
};

insertDataTo('Ext1', {
    merchant_id: 12345678910,
    external_id: 222222222,
    total: 799.0
});

falin 07.06.2018 16:24

Вроде да, js в каком-то простом варианте вроде проходит


Часовой пояс GMT +3, время: 20:10.