带有特定父输入的加号减号按钮不起作用

时间:2014-02-19 11:59:44

标签: javascript jquery html css increment

正如您在此处所见jsfiddle.net/TTU4Z/1/ 有问题的jquery代码在下面,如果我运行它没有我的所有代码(如在jsfiddle中)它运行完美。但我的所有代码都没有运行。

$(document).ready(function() {

// This button will increment the value
$('.plus').click(function(e){
    // Stop acting like a button
    e.preventDefault();
    // Get the field name
    fieldName = $(this).attr('field');
    // Get its current value
    var currentVal = parseInt($('input[id='+fieldName+']').val());
    // If is not undefined
    if (!isNaN(currentVal)) {
        // Increment
        $('input[id='+fieldName+']').val(currentVal + 1);
    } else {
        // Otherwise put a 0 there
        $('input[id='+fieldName+']').val(0);
    }
});
// This button will decrement the value till 1
$(".minus").click(function(e) {
    // Stop acting like a button
    e.preventDefault();
    // Get the field name
    fieldName = $(this).attr('field');
    // Get its current value
    var currentVal = parseInt($('input[id='+fieldName+']').val());
    // If it isn't undefined or its greater than 0
    if (!isNaN(currentVal) && currentVal > 0) {
        // Decrement one
        $('input[id='+fieldName+']').val(currentVal - 1);
    } else {
        // Otherwise put a 0 there
        $('input[id='+fieldName+']').val(0);
    }
});

});

点击"添加"按钮一切都很好,但当你点击减号或加号按钮时,它会全部删除。

如您所见,它应该增加或减少相对输入的值,但如果我尝试编辑这些函数中的所有内容,则没有任何变化。 怎么办?

2 个答案:

答案 0 :(得分:5)

由于您要动态追加元素,因此在这种情况下您必须使用event delegation。实际上注册的事件没有在你的上下文中调用,这就是buttons展示其原始行为的原因。

尝试,

$(document).on('click','.plus',function(e){

$(document).on('click','.minus',function(e){

此外,您动态构建的selector包含一些meta-characters,只需将其作为string传递,或者您必须escape,以便制作您的[id='blah']代码工作正常。

DEMO


修复连接问题后的新演示。在该演示中,我刚删除了$('#blah')等属性选择器,并将其替换为{{1}}。

DEMO - I

答案 1 :(得分:1)

请参阅更新的小提琴http://jsfiddle.net/LfNmh/

你在代码字符串中有你的x变量,它应该在代码中。第15行。

var numPortata = '<td><button class="minus" field="portata'+x+'">-</button><input id="portata'+x+'" type="number" name="numPortata[]" value="1" size="10" min="1" max="10" step="1" required><button class="plus" field="portata'+x+'">+</button></td>';

我也更改了代码,以便像Rajaprabhu所说的那样在文档级附加事件。