Вычисление без ввода данных

Тема в разделе "JavaScript", создана пользователем Remca, 4 май 2016.

  1. Remca

    Remca

    Регистрация:
    3 май 2016
    Сообщения:
    0
    Симпатии:
    0
    Проивзодятся вычисления по общей формуле L=l1+l2+l3. К l1,l2,l3 я написал скрипты и формы. Но проблема в том что значения которые получаются в итоге не копируются для вычисления общего L. Чтобы посчитать L общее,пользователю не нужно вводить данных потому что полученные результаты должны скопироваться для вычисления L общего.
    Как сделать так чтобы значения l1,l2,l3 сами копировались бы в поле, и давали бы вычисление L общего.
    По формуле L это общая длина всех колонн, а l1,l2,l3 длины соответсвенно нижней,средней и верхней секции. Помогите пожалуйста я туплю.
    Скрипты и форму я выкладываю:


    Код:
    <script> <!-- запрещаем пользователю вводить буквы -->
    function proverka(input) {
        var value = input.value;
        var rep = /[-;":'a-zA-Zа-яА-Я\\=`ё/\*[email protected]#$%\^&_№?><]/;
        if (rep.test(value)) {
            value = value.replace(rep, '');
            input.value = value;
        }
    }
    </script>
    
    <!-- задаю для всех div-ов класс price -->
    <style>
    .price {
    display:inline-block;
    width:400px;
    color:blue;
    }
    </style>
    
    <script> <!-- вычисление подрасчёта 2.1 -->
    function areaRectangle2(){
    var Q1=document.forma1.t9.value||0;
      var k=document.forma1.t10.value||0;
      var q1=document.forma1.t11.value||0;
      if ( (Q1 == 0) || (k == 0) || (q1 == 0) ) {
            alert('Входные данные не могут быть равны 0');
          return;
        }
        if ( (Q1 < 0) || (k < 0) || (q1 < 0)) {
            alert('Входные данные не могут быть меньше 0');
          return;
        }
      var l1=Q1/(k*q1||0);
      document.forma1.res2.value=l1;
      }
    </script>
    
    <script> <!-- вычисление подрасчёта 2.2 -->
    function areaRectangle3(){
    var Q1=document.forma1.t12.value||0;
      var Q2=document.forma1.t13.value||0;
      var k=document.forma1.t14.value||0;
      var q2=document.forma1.t15.value||0;
    
      if ( (Q1 == 0) || (Q2 == 0) || (k == 0) || (q2 == 0) ) {
            alert('Входные данные не могут быть равны 0');
          return;
        }
        if ( (Q2 == 0) || (Q2 < 0) || (k < 0) || (q2 < 0)) {
            alert('Входные данные не могут быть меньше 0');
          return;
        }
        if ( Q2 < Q1 ) {
            alert('Q2 должно быть больше Q1');
          return;
        }  
      var l2=(Q2-Q1)/(k*q2||0);
      document.forma1.res3.value=l2;
      }
    </script>
    
    <script> <!-- вычисление подрасчёта 2.3 -->
    function areaRectangle4(){
    var Q2=document.forma1.t16.value||0;
    var Q3=document.forma1.t17.value||0;
      var k=document.forma1.t18.value||0;
      var q3=document.forma1.t19.value||0;
      if ( (Q3 == 0) || (k == 0) || (q3 == 0) ) {
            alert('Входные данные не могут быть равны 0');
          return;
        }
        if ( (Q3 < 0) || (k < 0) || (q3 < 0)) {
            alert('Входные данные не могут быть меньше 0');
          return;
        }
        if ( Q3 < Q2 ) {
            alert('Q3 должно быть больше Q2');
          return;
        }  
      var l3=(Q3-Q2)/(k*q3||0);
      document.forma1.res4.value=l3;
      }
    </script>
    
    <script>
    onload=function(){
    document.getElementById('t9').oninput=function(){ //из поле t9 берётся значение
    document.getElementById('t12').value=this.value; //и копируется в поле t12, потому в формулах есть повторения.
    document.getElementById('t13').oninput=function(){ //из поле t9 берётся значение
    document.getElementById('t16').value=this.value; //и копируется в поле t12, потому в формулах есть повторения.
    }
    }
    document.getElementById('t10').oninput=function(){ //из поле t10 берётся значение
    document.getElementById('t14').value=this.value; //и копируется в поле t14, t18 потому в формулах есть повторения.
    document.getElementById('t18').value=this.value;
    }
    }
    document.getElementById('res2').oninput=function(){ //из поле t9 берётся значение
    document.getElementById('res21').value=this.value; //и копируется в поле t12, потому в формулах есть повторения.
    document.getElementById('res3').oninput=function(){ //из поле t9 берётся значение
    document.getElementById('res31').value=this.value; //и копируется в поле t12, потому в формулах есть повторения.
    document.getElementById('res4').oninput=function(){ //из поле t9 берётся значение
    document.getElementById('res41').value=this.value; //и копируется в поле t12, потому в формулах есть повторения.
    }
    }
    }
    </script>
    
    
    <!-- тот же самый скрипт копирования из одного в другое текстовое поле может быть написан в нескольких вариантах:
    ---------------------------------
    1. $(document).ready(function(){
    
    $('#t9').on('input',function(){
    $('#t12').val($(this).val());
    });
    
    });
    --------------------------------
    2. function _(id){return document.getElementById(id);}
    
    onload=function(){
    _('t9').oninput=function(){_('t12').value=this.value;}
    }
    -------------------------------
    -->
    
    <form name="forma1" style="background-color:#44944A;"> <!-- поменяю цвет формы -->
    <div id="resizable">
    <table align="center">
    <p align="center">Общая длина всех колонн</p>
    <tr><td height="40px">
    <div class="price">Длина колонны нижней секции;</div><input name="res21" id="res21" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Длина колонны средней секции;</div><input name="res31" id="res31" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Длина колонны верхней секции;</div><input name="res41" id="res41" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td>
    <input type="button" name="button" value="Вычислить" onClick="areaRectangle ();">
    <input type="text" name="res5" size="10">
    </td></tr>
    </table>
    
    <!--"подрасчёт 2.1"-->
    <table align="center">
    <tr><td height="40px">
    <p align="center">Длина колонны нижней секции;</p>
    <tr><td height="40px">
    <div class="price">Страгивающая нагрузка на резьбовые соединения труб диаметром 60мм;</div><input id="t9" name="t9" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Коэффициент запаса;</div><input id="t10" name="t10" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Вес 1метра труб с учетом муфт диаметром 60мм;</div><input name="t11" type="text" align="right" size="4"  maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td>
    <input type="button" name="button" value="Вычислить" onClick="areaRectangle2();">
    <input type="text" name="res2" size="10" id="res2">
    </td></tr>
    </table>
    
    
    <table align="center">
    <!--"подрасчёт 2.2"-->
    <p align="center">Длина колонны средней секции;</p>
    <tr><td height="40px">
    <div class="price">Страгивающая нагрузка на резьбовые соединения труб диаметром 60мм;</div><input id="t12" name="t12" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Страгивающая нагрузка на резьбовые соединения труб диаметром 73 мм ;</div><input id="t13" name="t13" type="text"  size="4"  maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Коэффициент запаса;</div><input id="t14" name="t14" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Вес 1метра труб диаметром 73 мм;</div><input name="t15" type="text"  size="4"  maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td>
    <input type="button" name="button" value="Вычислить" onClick="areaRectangle3();">
    <input type="text" name="res3" size="10" id="res3">
    </td></tr>
    </table>
    
    <table align="center">
    <!--"подрасчёт 2.3"-->
    <tr><td height="40px">
    <p align="center">Длина колонны верхней секции;</p>
    <tr><td height="40px">
    <div class="price">Страгивающая нагрузка на резьбовые соединения труб диаметром 73мм;</div><input id="t16" name="t16" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Страгивающая нагрузка на резьбовые соединения труб диаметром 89 мм ;</div><input type="text" align="right" name="t17" size="4"  maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Коэффициент запаса;</div><input id="t18" name="t18" type="text" align="right" size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td height="40px">
    <div class="price">Вес 1метра труб диаметром 89 мм;</div><input name="t19" type="text"  size="4" maxlength="8"  onkeyup="return proverka(this)">
    </td>
    </tr>
    <tr><td>
    <input type="button" name="button" value="Вычислить" onClick="areaRectangle4();">
    <input type="text" name="res4" size="10" id="res4">
    </td></tr>
    </table>
    </div>
    <br>
    </form>
     
  2. Remca

    Remca

    Регистрация:
    3 май 2016
    Сообщения:
    0
    Симпатии:
    0
    Ну,копирование из одного текстового поля в другое я реализовал но, тогда для этого нужно что нибудь ввести.
    А как реализовать такое "дублирование" без ввода чисел пользователем, и чтобы потом для нахождения L общего пользователю осталось бы нажать только на кнопку "Вычислить", а расчёт L общего выполнился без его участия. Скрипт немного изменил:


    Код:
    <script>
    onload=function(){
    document.getElementById('t9').oninput=function(){ //из поле t9 берётся значение
    document.getElementById('t12').value=this.value; //и копируется в поле t12, потому в формулах есть повторения.
    document.getElementById('t13').oninput=function(){ //из поле t13 берётся значение
    document.getElementById('t16').value=this.value; //и копируется в поле t16, потому в формулах есть повторения.
    }
    }
    document.getElementById('t10').oninput=function(){ //из поле t10 берётся значение
    document.getElementById('t14').value=this.value; //и копируется в поле t14, t18 потому в формулах есть повторения.
    document.getElementById('t18').value=this.value;
    }
    document.getElementById('res2').oninput=function(){ //из поле res2 берётся значение
    document.getElementById('res21').value=this.value; //и копируется в поле res21, потому в формулах есть повторения.
    document.getElementById('res3').oninput=function(){
    document.getElementById('res31').value=this.value; 
    document.getElementById('res4').oninput=function(){
    document.getElementById('res41').value=this.value; 
    }
    }
    }
    }
    </script>
     
    Последнее редактирование: 5 май 2016