Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Форма и перенос значений value между полями (https://javascript.ru/forum/misc/47117-forma-i-perenos-znachenijj-value-mezhdu-polyami.html)

errante 09.05.2014 12:38

Форма и перенос значений value между полями
 
Есть форма из 2-х полей

<input name="pole1" value="" type="text">
<input name="pole2" value="" type="text">

И 4-х радиокнопок
<input name="b1" value="1" type="radio">
<input name="b1" value="2" type="radio">
<input name="b1" value="3" type="radio">
<input name="b1" value="4" type="radio">

Как занести данные введенные в формы в одно из скрытых полей в
зависимости от выбора по радиокнопке

<input name="itog-pole1-b1" value="" type="hidden">
<input name="itog-pole2-b1" value="" type="hidden">

<input name="itog-pole1-b2" value="" type="hidden">
<input name="itog-pole2-b2" value="" type="hidden">
и т.д.

jsnb 10.05.2014 07:25

<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>
<form id="someid">
  <input name="pole1" value="" type="text"><br>
  <input name="pole2" value="" type="text">
  <br>
  <input name="b1" value="1" type="radio">
  <input name="b1" value="2" type="radio">
  <input name="b1" value="3" type="radio">
  <input name="b1" value="4" type="radio">
  <br>
  <input name="itog-pole1-b1" value="" type="text"><br>
  <input name="itog-pole2-b1" value="" type="text"><br>
  <br>
  <input name="itog-pole1-b2" value="" type="text"><br>
  <input name="itog-pole2-b2" value="" type="text"><br>
  <br>
  <input name="itog-pole1-b3" value="" type="text"><br>
  <input name="itog-pole2-b3" value="" type="text"><br>
  <br>
  <input name="itog-pole1-b4" value="" type="text"><br>
  <input name="itog-pole2-b4" value="" type="text"><br>
</form>

<script>
Array.prototype.slice.call( document.querySelectorAll('#someid input[name^="pole"]') ).forEach(function(el) {
  el.oninput = function() {
    var checkedRadio = this.form.querySelector('input[type="radio"]:checked');
    if (!checkedRadio) return;

    var radioVal = checkedRadio.value;
    var targetInput = this.form.querySelector('input[name="itog-'+this.name+'-b'+radioVal+'"]');
    if (targetInput) targetInput.value = this.value;
  }
});

Array.prototype.slice.call( document.querySelectorAll('#someid input[type="radio"]') ).forEach(function(el) {
  el.onclick = function() {
    var hiddenInputs = this.form.querySelectorAll('input[name^="itog-pole"]');
    Array.prototype.slice.call(hiddenInputs).forEach(function(el) { el.value = ''; });

    var pole1Target = this.form.querySelector('input[name="itog-pole1-b'+this.value+'"]');
    var pole2Target = this.form.querySelector('input[name="itog-pole2-b'+this.value+'"]');
    if (pole1Target && pole2Target) {
      pole1Target.value = this.form.elements['pole1'].value;
      pole2Target.value = this.form.elements['pole2'].value;
    }
  }
});
</script>

  </body>
</html>

errante 11.05.2014 18:09

jsnb, огромное спасибо!


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