微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

添加新行后如何解决“onkeyup”事件

如何解决添加新行后如何解决“onkeyup”事件

添加新行后,onkeyup() 事件无法工作。 我认为问题是因为 function checkamount() 只能根据第一个 rom 执行。

在我更改第一行工作的时间后,应该更改数量

请帮忙。谢谢!!

 <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jautocalc@1.3.1/dist/jautocalc.js"></script>
<script type="text/javascript">   
   $(document).ready(function() {
  var repeat = '<tr><td><input class="form-control"  name="dayhour[]" type="number" id="dayhour"  onkeyup="checkamount()" required></td> <td><select class="form-control" name="wagetype[]" type="text" id="wagetype" onchange="calc(this)" > <option value="" id="-----" hidden>-----</option><option value="Standby Allowance" id="Standby Allowance">Standby Allowance</option><option value="normal days - OT" id="normal days - OT">normal days - OT</option> <option value="Public Holidays - OT" id="Public Holidays - OT">Public Holidays - OT</option> </select>       </td><td><input class="form-control"  name="rate[]" type="double" id="rate"  readonly ></td><td><input class="form-control"  name="amount[]" type="double" id="amount"  readonly></td></td><td><input class="btn btn-danger" type="button" name="remove" id="remove" value="remove"></td> </tr>';

  $("#add").click(function() {
    $("#table_field").append(repeat);
  });

  $("#table_field").on('click','#remove',function() {
    $(this).closest('tr').remove();
  });
});

function calc(el) {
  //get num1 field value
  var aa = parseFloat($(el).closest('tr').find('[name*=dayhour').val());
  var amount;
  var rate;
  //compare
if (el.value == "Standby Allowance") {
    rate = 300.00;
    amount = 300.00;
  } else if (el.value == "normal days - OT") {
    rate = 18.75;
    amount = rate * aa;
  }else if (el.value == "Public Holidays - OT") {
    rate = 37.50;
    amount = rate * aa;
  } 

  //find rate and amout and add value there
  $(el).closest('tr').find('[name*=rate]').val(rate);
  $(el).closest('tr').find('[name*=amount]').val(amount);
}


function checkamount() {
    var textValue1 = document.getElementById('dayhour').value;
    var textValue2 = document.getElementById('rate').value;
    document.getElementById('amount').value =textValue1 * textValue2;
}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="insert-form" name="table_field" id="insert_form" method="post" action="applyForm.inc.PHP" onsubmit="return checkforblank()">
      <hr><h1 class="text-center">Overtime Table </h1><hr>
      <div class="input-field">
        <table class="table table-bordered" id="table_field" >
          <tr>
            <th>Hour</th>
            <th>wagetype</th>
            <th>Rate</th>
            <th>Amount</th>
            <th>Add or Remove</th>
          </tr>
          <tr>
            <td><input class="form-control"  name="dayhour[]" type="number" id="dayhour" onkeyup="checkamount()" required ></td>
            <td><select class="form-control" name="wagetype[]" type="text" id="wagetype" onchange="calc(this)" >
                        <option value="" id="-----" hidden>-----</option>
                        <option value="Standby Allowance" id="Standby Allowance">Standby Allowance</option>
                        <option value="normal days - OT" id="normal days - OT">normal days - OT</option>
                        <option value="Public Holidays - OT" id="Public Holidays - OT">Public Holidays - OT</option>
                      </select>
                    </td>

            <td><input class="form-control"  name="rate[]" type="double" id="rate"  readonly ></td>
            <td><input class="form-control"  name="amount[]" type="double" id="amount"  readonly></td>
            <td><input class="btn btn-warning" type="button" name="add" id="add" value="add"></td>
            </tr>
            </table>
          </div>
        </form>

这是它的工作原理 http://jsfiddle.net/L9eo6zfn/1/

解决方法

由于您已经在使用 jQuery,因此您可以使用此库捕获 onkeyup 事件。重要的是将事件附加到文档中,这样,它就可以处理任何输入,甚至是那些以编程方式添加的输入。

我会这样做:

$(document).ready(function() {
  var repeat = '<tr><td><input class="form-control"  name="dayhour[]" type="number" id="dayhour"  required></td> <td><select class="form-control" name="wagetype[]" type="text" id="wagetype" onchange="calc(this)" > <option value="" id="-----" hidden>-----</option><option value="Standby Allowance" id="Standby Allowance">Standby Allowance</option><option value="Normal days - OT" id="Normal days - OT">Normal days - OT</option> <option value="Public Holidays - OT" id="Public Holidays - OT">Public Holidays - OT</option> </select>       </td><td><input class="form-control"  name="rate[]" type="double" id="rate"  readonly ></td><td><input class="form-control"  name="amount[]" type="double" id="amount"  readonly></td></td><td><input class="btn btn-danger" type="button" name="remove" id="remove" value="remove"></td> </tr>';

  $("#add").click(function() {
    $("#table_field").append(repeat);
  });

  $("#table_field").on('click','#remove',function() {
    $(this).closest('tr').remove();
  });
  
  // Here is how to catch the keyup event
  $(document).on("keyup","#dayhour",function() {
    console.log("checkamount");
    checkamount();
  });
});

function calc(el) {
  //get num1 field value
  var aa = parseFloat($(el).closest('tr').find('[name*=dayhour').val());
  var amount;
  var rate;
  //compare
if (el.value == "Standby Allowance") {
    rate = 300.00;
    amount = 300.00;
  } else if (el.value == "Normal days - OT") {
    rate = 18.75;
    amount = rate * aa;
  }else if (el.value == "Public Holidays - OT") {
    rate = 37.50;
    amount = rate * aa;
  } 

  //find rate and amout and add value there
  $(el).closest('tr').find('[name*=rate]').val(rate);
  $(el).closest('tr').find('[name*=amount]').val(amount);
}


function checkamount() {
    var textValue1 = document.getElementById('dayhour').value;
    var textValue2 = document.getElementById('rate').value;
    document.getElementById('amount').value =textValue1 * textValue2;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="insert-form" name="table_field" id="insert_form" method="post" action="applyForm.inc.php" onsubmit="return checkforblank()">
      <hr><h1 class="text-center">Overtime Table </h1><hr>
      <div class="input-field">
        <table class="table table-bordered" id="table_field" >
          <tr>
            <th>Hour</th>
            <th>wagetype</th>
            <th>Rate</th>
            <th>Amount</th>
            <th>Add or Remove</th>
          </tr>
          <tr>
            <td><input class="form-control"  name="dayhour[]" type="number" id="dayhour" onkeyup="checkamount()" required ></td>
            <td><select class="form-control" name="wagetype[]" type="text" id="wagetype" onchange="calc(this)" >
                        <option value="" id="-----" hidden>-----</option>
                        <option value="Standby Allowance" id="Standby Allowance">Standby Allowance</option>
                        <option value="Normal days - OT" id="Normal days - OT">Normal days - OT</option>
                        <option value="Public Holidays - OT" id="Public Holidays - OT">Public Holidays - OT</option>
                      </select>
                    </td>

            <td><input class="form-control"  name="rate[]" type="double" id="rate"  readonly ></td>
            <td><input class="form-control"  name="amount[]" type="double" id="amount"  readonly></td>
            <td><input class="btn btn-warning" type="button" name="add" id="add" value="add"></td>
            </tr>
            </table>
          </div>
        </form>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?