Top.Mail.Ru
Ответы

Html js ломает мой мозг с oninput

<script>
form = {};
form['branchPriceOfDeliveryBlock'] = {}
form['branchPriceOfDeliveryBlock']['DeliveryPrice'] = '';
</script>

<input type="text" class="form-control"
oninput="form['branchPriceOfDeliveryBlock']['DeliveryPrice'] = event.target .value; console.log(form['branchPriceOfDeliveryBlock']['DeliveryPrice'])"
id="DeliveryPrice" value="" name="DeliveryPrice" placeholder="199">


Памогите не воркает не задаются данные ошибка выдаётся при вводе в инпут поле. Причем массив создан, всё должно же блин задаваться. Варианты с вызовом функции или addEventListener не подходит, нужно именно в теге там задавать значение.

https://jsbin.com/jaceqidito/edit?html,console,output

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
5мес

Похоже, что встроенный обработчик события не видит переменную form.
Я вынес код из oninput в отдельную функцию, и всё заработало.

12345678910111213
 <script> 
  var form = {}; 
  form['branchPriceOfDeliveryBlock'] = {}; 
  form['branchPriceOfDeliveryBlock']['DeliveryPrice'] = ''; 
   
  function q(event) { 
    form['branchPriceOfDeliveryBlock']['DeliveryPrice'] = event.target.value; 
    console.log(form['branchPriceOfDeliveryBlock']['DeliveryPrice']); 
  } 
</script> 
 
<input type="text" class="form-control" oninput="q(event)" 
id="DeliveryPrice" value="" name="DeliveryPrice" placeholder="199"> 
Аватар пользователя
Мудрец
5мес

<script>

document.addEventListener('DOMContentLoaded', () => {

window.myForm = {};

myForm['branchPriceOfDeliveryBlock'] = {}

myForm['branchPriceOfDeliveryBlock']['DeliveryPrice'] = '';

});

</script>

<input type="text" class="form-control"
oninput="myForm['branchPriceOfDeliveryBlock']['DeliveryPrice'] = event.target .value; console.log(myForm['branchPriceOfDeliveryBlock']['DeliveryPrice'])"
id="DeliveryPrice" value="" name="DeliveryPrice" placeholder="199">

  1. Проверь, что скрипт выполняется до построения html страницы, используйте . DOMContentLoaded чтобы объект myForm был создан до взаимодействия пользователя с формой.

  2. Переименуй form в myForm, чтобы избежать возможных конфликтов с тегом <form>, если он есть в документе.

Аватар пользователя
Искусственный Интеллект
5мес

Ничего не понятно. А что ты хочешь этим скриптом сделать то?