在 Rails 表单中,如何使用 Jquery 隐藏和取消隐藏表单元素?我的脚本不起作用

In a Rails form how to use Jquery to hide and unhide form elements? My scripts won't work

本文关键字:隐藏 表单 元素 取消 我的 不起作用 脚本 Jquery Rails 何使用      更新时间:2023-09-26

在Rails中,我有一个一次编辑多个记录的表单。我想仅在勾选复选框时才显示一些元素。这是我写的javascript:

<script type="text/javascript">
    $(document).ready(function() {
        // Initially if free is checked hide nonfree options else show
        if ($('<%= "#submits_#{submitid}_free" %>').attr('value') == '1') {
            $('<%= "#submits_#{submitid}_revealnonfree" %>').hide();
        } else {
            $('<%= "#submits_#{submitid}_revealnonfree" %>').show();
        }
        // Initiall if sell rights is checked show prices or else hide
        if ($('<%= "#submits_#{submitid}_sellrights" %>').attr('value') == '1') {
            $('<%= "#submits_#{submitid}_revealrights" %>').show();
        } else {
            $('<%= "#submits_#{submitid}_revealrights" %>').hide();
        }
        // If free checked hide nonfree
        $('<%= "#submits_#{submitid}_free" %>').change(function() {
            if (this.checked) {
                $('<%= "#submits_#{submitid}_revealnonfree" %>').fadeOut('slow');
            } else {
                $('<%= "#submits_#{submitid}_revealnonfree" %>').fadeIn('slow');
            }
        });
        //If sell rights checked show prices
        $('<%= "#submits_#{submitid}_sellrights" %>').change(function() {
            if (this.checked) {
                $('<%= "#submits_#{submitid}_revealrights" %>').fadeIn('slow');
            } else {
                $('<%= "#submits_#{submitid}_revealrights" %>').fadeOut('slow');
            }
        });
    });
</script>

我在每条记录后加载它。当更改正确的复选框值时,脚本会隐藏和取消隐藏元素。但是,如果在页面加载时在开头勾选该复选框,则脚本将不会显示必要的元素。脚本的第一部分应该这样做,但它没有。这是我没有脚本的表单源代码: http://pastebin.com/Vj9HbrEB

只需为每个复选框触发一次更改事件,然后将其广告到脚本末尾:

    $('<%= "#submits_#{submitid}_free" %>').trigger('change')
    $('<%= "#submits_#{submitid}_sellrights" %>').trigger('change')