jQuery输入触发器实时更改

时间:2012-09-05 01:17:48

标签: jquery input triggers live

当我点击一个单选按钮时,我成功地执行了更改,但问题是,当我重新加载页面时,单选按钮选择被保留,但更改不是。换句话说,如果我单击单选按钮#1,它将降低某些字段的不透明度。当我回到这个页面时,所有字段都具有完全不透明度,直到我再次单击单选按钮才会执行该操作。

这是我的代码:

(function($) {

    // Document Ready
    $(document).ready(function() {

        // trigger change on the radio list to show selected field
        $('#acf-feature_slide ul.radio_list li label input').trigger('change');

    });

    // Content Type change
    $('#acf-feature_slide ul.radio_list li label input').live('change', function() {

        // vars
        var value = $(this).val();

        // show the selected field
        if( value == "internal" ) {
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '1.0');
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '0.2');
        }
        else if( value == "external" ) {
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '0.2');
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '1.0');
        }
        else if( value == "none" ) {
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '0.2');
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '0.2');
        }
        else {
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(3).css('opacity', '1.0');
            $(this).parentsUntil('tr').find('div.row-layout-field').eq(4).css('opacity', '1.0');
        }

    });

})(jQuery);

非常感谢任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

某些浏览器会在重新加载时保留您为某些按钮选择的选项( NOT GUARANTEED 始终工作或在每个浏览器上工作),但肯定不会保留触发事件之类的内容。换句话说,您需要以2种方式中的一种(或两种方式)存储您的单选按钮选项和不透明度选项,以便它们在重新加载时保持不变1.)HTML5 localStorage(不建议使用cookie)2)服务器端。

您当前的代码没有存储任何内容 - 您很幸运,因为您的浏览器在重新加载时碰巧选择了单选按钮。

编辑:所以你没有幸运的收音机按钮......非常好!如果你可以确定单击按钮在重新加载时保持检查状态,那么是的,你可以验证它是否被检查。

假设您确切地知道要验证的单选按钮的ID,并且您想知道它是否已经过检查。在您的文档加载上执行此操作:$('#myradiobutton')。is(':checked');如果未选中则返回false,如果选中则返回true。然后你可以使用if语句来说

if( $('#myradiobutton').is(':checked') ){
   dothis();
}