Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Связанные input (https://javascript.ru/forum/dom-window/52036-svyazannye-input.html)

el01 01.12.2014 15:35

Связанные input
 
Из базы приходит инфа о значениях A, B и сумма этих значений - C.
Есть да текстовых поля, куда попадают A и B:
<input class="form-control input-lg" type="text" name="a" value="'.$res['a'].'">
<input class="form-control input-lg" type="text" name="b" value="'.$res['b'].'">

Вопрос:
Как сделать, чтобы, при изменении пользователем значения A, в поле B автоматически высчитывалась разница между C и B?
Ну и, соответственно, наоборот, если юзер меняет B, то A высчитывается как C минус B?

Заранее спасибо!

ksa 01.12.2014 16:56

Цитата:

Сообщение от el01
Как сделать, чтобы, при изменении пользователем значения A, в поле B автоматически высчитывалась разница между C и B?

Как вариант...
- хранить в скрытом поле значение суммы (С)
- отлавливать изменение полей
- работать с суммой
- менять связанное поле

el01 01.12.2014 17:05

Об этом я догадался...
Я в принципе не знаком с яваскриптом, поэтому и спрашиваю.
Может быть есть готовое решение.

krutoy 01.12.2014 17:37

<html>
<head></head>
<input id="one" />
<input id="two" />

<body>
<script>
input1=document.querySelector("#one")
input2=document.querySelector("#two")

base=10
calc=function(){
    var another
    switch(this){
        case input1: another=input2; break
        case input2: another=input1; break
    }
    another.value=base-this.value
}

input1.oninput=calc
input2.oninput=calc

</script>
</body>
</html>

el01 01.12.2014 17:42

krutoy,
Спасибо, то, что надо!

kostyanet 03.12.2014 16:15

Кстати, а почему output не уходит на сервер?

kostyanet 03.12.2014 16:25

Локальное инлайновое
<!DOCTYPE HTML>
<html>
<head></head>
 
  <form>
  <input name="a" oninput="{this.form.b.value=10-this.value}" />
<input name="b" oninput="{this.form.a.value=10-this.value}"/>
  </form>

<body>
</body>
</html>


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