Jquery 输入字段不';t无法从数据默认属性获取正确的值

Jquery 输入字段不';t无法从数据默认属性获取正确的值,jquery,Jquery,我有一些带有输入字段的表行;对于每个字段,我都设置了一个数据默认属性:在输入更改的情况下,我有一种方法可以返回到默认值,选择数据默认值 对于每一行,我也有一个复选框:如果选中,字段值将转到“0:00”(它是“小时:分钟”格式);如果未选中,则值应返回默认值 问题来了:取消选中时,输入字段不会切换到默认值,而是变为空。这是我的代码: $('.cb').click(function(){ var el = $(this); var parent = el.closest('tr');

我有一些带有输入字段的表行;对于每个字段,我都设置了一个数据默认属性:在输入更改的情况下,我有一种方法可以返回到默认值,选择数据默认值

对于每一行,我也有一个复选框:如果选中,字段值将转到“0:00”(它是“小时:分钟”格式);如果未选中,则值应返回默认值

问题来了:取消选中时,输入字段不会切换到默认值,而是变为空。这是我的代码:

$('.cb').click(function(){
    var el = $(this);
    var parent = el.closest('tr');
    if (el.is(':checked')) {
        parent.find('.timepicker').val('0:00');
    } else {        
        parent.find('.timepicker').val($(this).data('default'));
    }
});
下面是JS小提琴:

有什么帮助吗?

您可以尝试以下方法:

$('.cb').click(function(){
    var el = $(this);
    var parent = el.closest('tr');
    if (el.is(':checked')) {
        parent.find('.timepicker').val('0:00');
    } else {        
        parent.find('.timepicker').each(function(){
            $(this).val($(this).attr('data-default'));
        });
    }
});
这是您的建议。

您可以尝试以下方法:

$('.cb').click(function(){
    var el = $(this);
    var parent = el.closest('tr');
    if (el.is(':checked')) {
        parent.find('.timepicker').val('0:00');
    } else {        
        parent.find('.timepicker').each(function(){
            $(this).val($(this).attr('data-default'));
        });
    }
});

以下是.

这是因为您试图访问复选框本身的
数据(“默认值”)
,而复选框本身没有该属性。您需要访问
.timepicker

parent.find('.timepicker').val(function() {
        return $(this).data('default');
    });

这是因为您试图访问复选框本身的
数据(“默认值”)
,而复选框本身没有该属性。您需要访问
.timepicker

parent.find('.timepicker').val(function() {
        return $(this).data('default');
    });

@初学者,它正在工作。确保再次检查正确的小提琴检查。它默认为第一个字段的值。如果不循环,则它将分配第一个循环的值element@Beginner,谢谢你出色的运动技巧和纠正!我更正了我的回答谢谢,但取消选中复选框会将所有字段设置为9:00,而不是默认值values@Ivan,我已经更正了我的答案。你可以看到它在这里工作@初学者,它正在工作。确保再次检查正确的小提琴检查。它默认为第一个字段的值。如果不循环,则它将分配第一个循环的值element@Beginner,谢谢你出色的运动技巧和纠正!我更正了我的回答谢谢,但取消选中复选框会将所有字段设置为9:00,而不是默认值values@Ivan,我已经更正了我的答案。你可以看到它在这里工作,这是第一个完全正确的答案。我感谢初学者提醒我注意我的错误mistake@Ivan很高兴它有帮助:)公平地说,这是第一个完全正确的答案。我感谢初学者提醒我注意我的错误mistake@Ivan很高兴这有帮助:)