jQuery事件委托将无法正常工作

用户名

所以我有这段代码。

$("#inputs input.time").mask("00:00:00");
$("#inputs input.time").prop('value', '00:00:00');
Number.prototype.padDigit = function () {
    return (this < 10) ? '0' + this : this;
}
$('#display').click(function () {
    $('#show').show();
});
$('#inputs').on('focus', 'input.time', function () {
    $(this).select();
});
$('#append').click(function () {
    $('#inputs').after("<input type='text' value='00:00:00' class='time' name='time2' /><br>");
});
$('#inputs').on('keyup', 'input.time', function (event) {
    console.log(event);
    var t1 = '00:00:00';
    var mins = 0;
    var hrs = 0;
    var sec = 0;
    $('#inputs input.time').each(function () {
        t1 = t1.split(':');
        var t2 = $(this).val().split(':');
        //console.log(Number(t1[1]) + Number(t2[1]))
        sec = Number(t1[2]) + Number(t2[2]);
        secmns = Math.floor(parseInt(sec / 60));
        mins = Number(t1[1]) + Number(t2[1]) + secmns;
        minhrs = Math.floor(parseInt(mins / 60));
        hrs = Number(t1[0]) + Number(t2[0]) + minhrs;
        sec = sec % 60;
        mins = mins % 60;
        t1 = hrs.padDigit() + ':' + mins.padDigit() + ':' + sec.padDigit()
        console.log(t1)
    });
    if (t1 == 'NaN:NaN:NaN') {
        t1 = '00:00:00';
    }
    $('#total').text(t1);
    /*****************subtract time*****************/
    //new Date(year, month, day, hours, minutes, seconds, milliseconds)
    //problem, if the seconds, mins or hrs of total is bigger than the remaining. Unexpected result
    var start = $('#rem').text();
    var end = $('#total').text();
    s = start.split(':');
    e = end.split(':');
    var se = Number(s[2]) - Number(e[2]);
    var sems = Math.floor(parseInt(sec / 60));
    var mi = Number(s[1]) - Number(e[1]) - sems;
    var mihr = Math.floor(parseInt(mins / 60));
    var hr = Number(s[0]) - Number(e[0]) - mihr;
    if (se < 0) {
        mi = mi - 1;
        se = se + 60;
    }
    if (mi < 0) {
        hr = hr - 1;
        mi = mi + 60;
    }
    var result = hr.padDigit() + ':' + mi.padDigit() + ':' + se.padDigit();
    if (result == 'NaN:NaN:' + se) {
        result = '00:00:00';
    }
    $('#remain').text(result);
});
#remain,
#total {
  background-color: #333;
  width: 60px;
  height: 20px;
  color: #fff;
  padding: 0 10px;
}
#show {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<script src="https://raw.githubusercontent.com/igorescobar/jQuery-Mask-Plugin/master/src/jquery.mask.js"></script>
<button id='display'>Display</button>
<div id='show'>Remaining:
  <div id='remain'>01:20:30</div>Total:
  <div id='total'>00:00:00</div>
  <div id='rem'>01:20:30</div>
  <br>
  <div id='inputs'>
    <input type='text' class='time' />
    <button id='append'>+</button>
    <br>
  </div>
</div>

我的问题是该事件on('keyup')可以正常.append运行并且结果在keyup事件上运行,但是如果我使用.after而不是.append,代码仍然可以正常工作,但是结果仅在keyup事件在第一个输入上完成的情况下才会显示。如果上面的代码无法运行,请尝试我的JFiddle它与上面的代码相同。

古鲁帕萨德·J·饶

希望这就是你想要的!您需要使用insertAfter过去后插入它input#inputsDIV

$('#append').click(function () {
           $("<input type='text' value='00:00:00' class='time' name='time2' />").insertAfter("#inputs input:last");
});

这是工作中的演示

编辑-2

进行如下更改,它将起作用:

$('#append').click(function () {
          $("#inputs").after("<input type='text' value='00:00:00' class='time' name='time2' /><br/>");
});

$(document).on('keyup', 'input.time', function (event) {
    console.log(event);
    var t1 = '00:00:00';
    var mins = 0;
    var hrs = 0;
    var sec = 0;
    $('input.time').each(function () {
        t1 = t1.split(':');
        var t2 = $(this).val().split(':');
        //console.log(Number(t1[1]) + Number(t2[1]))
        sec = Number(t1[2]) + Number(t2[2]);
        secmns = Math.floor(parseInt(sec / 60));
        mins = Number(t1[1]) + Number(t2[1]) + secmns;
        minhrs = Math.floor(parseInt(mins / 60));
        hrs = Number(t1[0]) + Number(t2[0]) + minhrs;
        sec = sec % 60;
        mins = mins % 60;
        t1 = hrs.padDigit() + ':' + mins.padDigit() + ':' + sec.padDigit()
        console.log(t1)
    });
    if (t1 == 'NaN:NaN:NaN') {
        t1 = '00:00:00';
    }
    $('#total').text(t1);
    /*****************subtract time*****************/
    //new Date(year, month, day, hours, minutes, seconds, milliseconds)
    //problem, if the seconds, mins or hrs of total is bigger than the remaining. Unexpected result
    var start = $('#rem').text();
    var end = $('#total').text();
    s = start.split(':');
    e = end.split(':');
    var se = Number(s[2]) - Number(e[2]);
    var sems = Math.floor(parseInt(sec / 60));
    var mi = Number(s[1]) - Number(e[1]) - sems;
    var mihr = Math.floor(parseInt(mins / 60));
    var hr = Number(s[0]) - Number(e[0]) - mihr;
    if (se < 0) {
        mi = mi - 1;
        se = se + 60;
    }
    if (mi < 0) {
        hr = hr - 1;
        mi = mi + 60;
    }
    var result = hr.padDigit() + ':' + mi.padDigit() + ':' + se.padDigit();
    if (result == 'NaN:NaN:' + se) {
        result = '00:00:00';
    }
    $('#remain').text(result);
});

工作演示

基本上,您想做的是after#inputsdiv中插入输入并编写了接受divkeyup中存在的代码#inputsinputs如果您只引用更改的所有位置,则将它们赋予相同的类名,这就足够了。无需通过其父div与他们联系。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery事件功能无法正常工作

来自分类Dev

jQuery滑块的slide事件无法正常工作

来自分类Dev

jQuery的文字替换将无法正常工作

来自分类Dev

jQuery的覆盖将无法正常工作

来自分类Dev

UIScrollView委托属性无法正常工作

来自分类Dev

Laravel 5与委托-hasRole无法正常工作

来自分类Dev

jQuery Mobile Phonegap Cordova事件无法正常工作并触发

来自分类Dev

外部jquery .click()事件有时无法正常工作

来自分类Dev

jQuery在事件发生后无法正常工作

来自分类Dev

setOnKeyPressed事件无法正常工作

来自分类Dev

jQuery .on()无法正常工作

来自分类Dev

jQuery .on()无法正常工作

来自分类Dev

jQuery $('a')无法正常工作

来自分类Dev

jQuery无法正常工作。jQuery的

来自分类Dev

在jQuery中添加<li>标签将无法正常工作

来自分类Dev

如果放在PHP之前,jQuery按钮将无法正常工作

来自分类Dev

如果外部加载元素,jQuery将无法正常工作

来自分类Dev

现在更新的jQuery代码将无法正常工作

来自分类Dev

当我使用附加时,jQuery将无法正常工作

来自分类Dev

将JavaScript传输到jQuery无法正常工作

来自分类Dev

使用套接字的C#委托无法正常工作

来自分类Dev

bpopup jQuery无法正常工作

来自分类Dev

jQuery冲突无法正常工作

来自分类Dev

jQuery Valildator无法正常工作

来自分类Dev

.css()jQuery无法正常工作

来自分类Dev

jQuery tinysort无法正常工作

来自分类Dev

jQuery Fancybox无法正常工作

来自分类Dev

jQuery Datepicker无法正常工作

来自分类Dev

jQuery .slideUp()无法正常工作