2017-01-10 4 views
0

Я создаю форму, которая требует, чтобы поле было равно другому, если флажок установлен, но все еще доступен для редактирования, если пользователь решает изменить сумму.javascript if/else, но все еще редактируемый

document.addEventListener("change", myFunction2); 
    function myFunction2(){ 
      if (document.getElementById('itemize').checked==true) { 
       document.getElementById('six').value = document.getElementById('jobs_9').value; 
    } 

Прямо сейчас, пока этот флажок отмечен, это окно ввода не может быть отредактировано. Есть ли способ иметь входной сигнал равным, но также оставить его открытым для пересмотра?

Спасибо.

+4

Мне непонятно, что такое поведение в настоящее время, и что вы хотите, чтобы поведение было вместо этого. – cdhowie

+2

Просто не всегда копируйте с # # jobs_9' на '# six', но из измененного на другой. – Bergi

+0

В настоящее время вы можете поместить любую сумму в «шестерку», но когда флажок itemize установлен, «шесть» принимает любое количество в «jobs_9». все это отлично работает, но я хочу, чтобы пользователь мог редактировать «шесть», если им не нравится сумма, занятая jobs_9. извините, требования довольно запутанны. – Dave

ответ

0

Постарайтесь думать об этом больше в человеческой версии.

Вы говорите: когда документ изменяется, если флажок установлен, поля будут равны.

Постарайтесь добавить слушателя к флажку!

Скажите, можете ли вы это сделать!

Edit: пример того, что вы можете сделать (с кодом):

var checkboxy = document.getElementById('itemize'); 

checkboxy.addEventListener("change", myFunction2); 
    function myFunction2(){ 
      if (document.getElementById('itemize').checked==true) { 
       document.getElementById('six').value = document.getElementById('jobs_9').value; 
    } 
} 

Рабочая: https://jsfiddle.net/pb2740yy/

+0

Уже есть слушатель, который запускается при щелчке по галочке. – Bergi

+0

Слушатель находится в документе, он хочет только равных значений, когда пользователь проверяет его, поэтому его можно изменить. – Bitito

+0

Он уже * делает * только выравнивает значения, пока проверяется '# itemize'? – Bergi

1

Приложить различные обработчики непосредственно к каждому входу, где каждый копирует обработчик значение измененного ввод на другой вход. Без использования JQuery, вы могли бы сделать что-то вроде этого:

(function() { 
    var itemize = document.getElementById('itemize'); 

    function addChangeListener(from, to) { 
     from = document.getElementById(from); 
     to = document.getElementById(to); 

     from.addEventListener('change', function() { 
      if (itemize.checked) { 
       to.value = from.value; 
      } 
     } 
    } 

    addChangeListener('six', 'jobs_9'); 
    addChangeListener('jobs_9', 'six'); 
})(); 

Вам также потребуется обработчик, когда #itemize флажок. Если в этом случае значения различны, вам просто нужно выбрать один (если вы не хотите отслеживать, что было изменено последним).