【问题标题】:JavaScript calculated fieldJavaScript 计算字段
【发布时间】:2016-09-28 00:50:39
【问题描述】:

我只是看不出我做错了什么......它不计算“震惊”领域。

我这边出了点小错误,我就是看不出来。

已编辑:现在一切正常

$(document).ready(function(){
  $('.item').keyup(function(){

    var starts = 0;
    var ends = 0;
    var stunden = 0;

    if (!isNaN($(this).find(".starts").val())) {
      starts = $(this).find(".starts").val();
    }
    if (!isNaN($(this).find(".ends").val())) {
      ends = $(this).find(".ends").val();
    }

    stunden = ends - starts;
    $(this).find(".stunden").val(stunden);

  });    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <table id="t1" class="table table-hover">
    <tr>
      <th class="text-center">Start Time</th>
      <th class="text-center">End Time</th>
      <th class="text-center">Stunden</th>
    </tr>
    <tr id="row1" class="item">
      <td><input name="starts[]" class="starts form-control" ></td>
      <td><input name="ends[]" class="ends form-control" ></td>
      <td><input name="stunden[]" class="stunden form-control" readonly="readonly" ></td>
    </tr>
    <tr id="row2" class="item">
      <td><input name="starts[]" class="starts form-control" ></td>
      <td><input name="ends[]" class="ends form-control" ></td>
      <td><input name="stunden[]" class="stunden form-control" readonly="readonly" ></td>
    </tr>
  </table>
</div>

【问题讨论】:

  • 这段代码应该做什么?预期输出是什么?
  • 只是为了从开始和结束字段计算震惊的输入字段。 stunden 字段是只读的,并且是开始和结束之间的差异。
  • .stunden 是只读的,您在此输入控件上收听 keyup 事件。因此,这段代码不可能被执行
  • 是的,你是对的 :( 我把它改成听 .ends on keyup,但它仍然不起作用

标签: javascript


【解决方案1】:

问题在于,当在.stunden 字段中按下某个键时,您正在重新计算,因此您应该将事件移至其他输入或父行。你需要这样的东西。

$('.item').keyup(function(){
  var starts = 0;
  var ends = 0;
  var stunden = 0;
  if (!isNaN($(this).find(".starts").val())) {
    starts = $(this).find(".starts").val();
  }
  if (!isNaN($(this).find(".ends").val())) {
    ends = $(this).find(".ends").val();
  }
  stunden = starts - ends;
  $(this).find(".stunden").val(stunden);
});

【讨论】:

  • @lewis4u 您可能想尝试搜索更改的答案。您是世界上第一个遇到此问题的人的可能性恰好零。另外,不要在 StackOverflow 上的 cmets 中发布后续问题。
  • @lewis4u,我同意 Tomalak,但只是为了帮助你一点,看看这个; stackoverflow.com/questions/9640266/…
【解决方案2】:

让我试试你原来的keyup代码.ends,我只是想解释一下代码下面的工作原理

  • 调用.starts,我们目前在tr&gt;td&gt;input,所以需要通过parent()备份到tr,然后我们在其元素中找到.starts。还有.ends
  • find .studen 也处于状态 tr&gt;td&gt;input ,所以备份到 td 并通过 next() 转到下一个 td 然后找到 .studen 。

    $(document).ready(function(){
        $('.ends').keyup(function(){
                var starts = 0;
                var ends = 0;
                var stunden = 0;            
                if (!isNaN($(this).parent().parent().find(".starts").val())) {
                    starts = $(this).parent().parent().find(".starts").val();
                }
                if (!isNaN($(this).parent().parent().find(".ends").val())) {
                    ends = $(this).parent().parent().find(".ends").val();
                }            
                stunden = starts - ends;
                $(this).parent().next().find('.stunden').val(stunden);
    
        });    
    }); 
    

【讨论】:

  • 它不适用于 $('.ends').keyup(function(){ ----- 但适用于 $('.item').keyup(function(){ 它作品
  • 是的,现在我测试了它,它可以工作....但对我来说,只更改一个单词“.item”而不是“.ends”要简单得多
  • 是的,我知道!只是告诉你,你的原始代码也可以工作!
猜你喜欢
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
相关资源
最近更新 更多