Вычисляемые поля в HTML-форме не работают

0

Я работаю с DreamWeaver, PHP, MySQL, JQuery Mobile и JavaScript. Я показываю записи MySQL в таблице, и каждая строка имеет ссылку редактирования, чтобы открыть файл записи обновления. Используя JavaScript в файле записи вставки, я могу вычислять значения полей с помощью функции JavaScript, но теперь я пытаюсь сделать то же самое в файле записи обновления.

Проблема, которую я имею сейчас, заключается в том, что во втором файле вызывается функция JavaScript, но любой расчет выполнен.

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

Это код JavaScript для обоих файлов:

<script type="text/javascript"> 
function calculatetotal(){
    alert("I am an alert box!");
    var mat = 0;
    mat = parseFloat(document.getElementById('mat').value);
    var mo = 0;
    mo = parseFloat(document.getElementById('mo').value);
    var uti = 0;
    uti = parseFloat(document.getElementById('uti').value);
    var ind = 0;
    ind = parseFloat(document.getElementById('ind').value);
    var poriva = 0;
    poriva = parseFloat(document.getElementById('poriva').value);
    var  totaliva =0;
    var totcliente =0;
    totcliente = (mat+mo+uti+ind).toFixed(2);;
    var totaliva = ((poriva)/100)*totcliente;
    document.getElementById('totCliente').value = (mat+mo+uti+ind).toFixed(2);
    document.getElementById('totaliva').value = totaliva; 
    document.getElementById('totalpre').value= parseFloat(totaliva)+parseFloat(totcliente);
}
</script>

Мне нужна ваша помощь, чтобы понять, почему она работает над файлом записи вставки, а не в файле записи обновления.

Это код для части формы в HTML из части записи обновления:

  <form method="post" name="form1" id="form1" data-ajax="false" action="<?php echo $editFormAction; ?>">
            <table align="center">
              <tr valign="baseline">
                <td nowrap align="right">Obra:</td>
                <td><select name="int_obra">
                  <?php 
do {  
?>
                  <option value="<?php echo $row_Recordset2['idObra']?>" <?php if (!(strcmp($row_Recordset2['idObra'], htmlentities($row_Recordset1['int_obra'], ENT_COMPAT, 'UTF-8')))) {echo "SELECTED";} ?>><?php echo $row_Recordset2['nombreObra']?></option>
                  <?php
} while ($row_Recordset2 = mysql_fetch_assoc($Recordset2));
?>
                </select></td>
              <tr>
              <tr valign="baseline">
                <td nowrap align="right">Materiales:</td>
                <td><input type="text" name="dbl_materiales" value="<?php echo htmlentities($row_Recordset1['dbl_materiales'], ENT_COMPAT, 'UTF-8'); ?>" size="32"   id="mat"  onChange="calculatetotal()"></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">Mano de Obra:</td>
                <td><input type="text" name="dbl_mano_de_obra" value="<?php echo htmlentities($row_Recordset1['dbl_mano_de_obra'], ENT_COMPAT, 'UTF-8'); ?>" size="32" id="mo" onChange="calculatetotal()"></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">Utilidad:</td>
                <td><input type="text" name="dbl_utilidad" value="<?php echo htmlentities($row_Recordset1['dbl_utilidad'], ENT_COMPAT, 'UTF-8'); ?>" size="32" id="uti" onChange="calculatetotal()"></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">Indirectos:</td>
                <td><input type="text" name="dbl_indirectos" value="<?php echo htmlentities($row_Recordset1['dbl_indirectos'], ENT_COMPAT, 'UTF-8'); ?>" id="ind" onChange="calculatetotal()"size="32"></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">Pre. aprobado por cliente:</td>
                <td><input name="dbl_total" type="text" id="totcliente"  value="<?php echo htmlentities($row_Recordset1['dbl_total'], ENT_COMPAT, 'UTF-8'); ?>" size="32" readonly></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">% IVA:</td>
                <td><input type="text" name="dbl_porcentaje_iva" value="<?php echo htmlentities($row_Recordset1['dbl_porcentaje_iva'], ENT_COMPAT, 'UTF-8'); ?>" size="32" id="poriva" onChange="calculatetotal()"></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">Total IVA:</td>
                <td><input name="dbl_total_iva" type="text" value="<?php echo htmlentities($row_Recordset1['dbl_total_iva'], ENT_COMPAT, 'UTF-8'); ?>" size="32" id="totaliva" readonly></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">TOTAL DEL PRESUPUESTO:</td>
                <td><strong>
                <input name="dbl_total_presupuesto" type="text" value="<?php echo htmlentities($row_Recordset1['dbl_total_presupuesto'], ENT_COMPAT, 'UTF-8'); ?>" size="32" id="totalpre" readonly>
                </strong></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">MONEDA:</td>
                <td><select name="int_moneda">
                  <option value="1" <?php if (!(strcmp(1, htmlentities($row_Recordset1['int_moneda'], ENT_COMPAT, 'UTF-8')))) {echo "SELECTED";} ?>>PESO MXN</option>
                  <option value="2" <?php if (!(strcmp(2, htmlentities($row_Recordset1['int_moneda'], ENT_COMPAT, 'UTF-8')))) {echo "SELECTED";} ?>>USD</option>
                </select></td>
              </tr>
              <tr valign="baseline">
                <td nowrap align="right">&nbsp;</td>
                <td><input type="submit" value="Actualizar Presupuesto"></td>
              </tr>
            </table>
            <input type="hidden" name="MM_update" value="form1">
            <input type="hidden" name="idPresupuesto" value="<?php echo $row_Recordset1['idPresupuesto']; ?>">
          </form>
Теги:

2 ответа

0
Лучший ответ

Я обновил код JavaScript, и теперь он работает так, как ожидалось. Спасибо за помощь.

<script type="text/javascript"> 
function calculatetotal(){

    var mat = 0;
    mat = parseFloat(document.getElementById('mat').value);
    var mo = 0;
    mo = parseFloat(document.getElementById('mo').value);
    var uti = 0;
    uti = parseFloat(document.getElementById('uti').value);
    var ind = 0;
    ind = parseFloat(document.getElementById('ind').value);
    var poriva = 0;
    poriva = parseFloat(document.getElementById('poriva').value);

    totcliente = (mat+mo+uti+ind).toFixed(2);
    var totaliva = parseFloat(((poriva)/100)*totcliente);
    document.getElementById('totcliente').value = totcliente;
    document.getElementById('totaliva').value = totaliva.toFixed(2);
    document.getElementById('totalpre').value = (parseFloat(totcliente)+parseFloat(totaliva)).toFixed(2);
}
</script>
-2

добавьте свой скрипт в конец страницы juste перед </body> и вызовите функцию:

<script type="text/javascript"> 
function calculatetotal(){
    alert("I am an alert box!");
    var mat = 0;
    mat = parseFloat(document.getElementById('mat').value);
    var mo = 0;
    mo = parseFloat(document.getElementById('mo').value);
    var uti = 0;
    uti = parseFloat(document.getElementById('uti').value);
    var ind = 0;
    ind = parseFloat(document.getElementById('ind').value);
    var poriva = 0;
    poriva = parseFloat(document.getElementById('poriva').value);
    var  totaliva =0;
    var totcliente =0;
    totcliente = (mat+mo+uti+ind).toFixed(2);;
    var totaliva = ((poriva)/100)*totcliente;
    document.getElementById('totCliente').value = (mat+mo+uti+ind).toFixed(2);
    document.getElementById('totaliva').value = totaliva; 
    document.getElementById('totalpre').value= parseFloat(totaliva)+parseFloat(totcliente);
}

calculatetotal();

</script>
</body>
</html>
  • 0
    Что вы имеете в виду, мне нужно вызывать JavaScript каждый раз, когда значение поля изменяется .. спасибо за ваш ответ
  • 0
    Я имею в виду ваш тег javascript должен быть после вашего тега HTML. И вы должны вычислить total (), если хотите его инициализировать. Я имею в виду onchange работает, если пользователь меняет значение. поэтому добавьте <script>calculatetotal();</script> после внедрения скрипта
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню