首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果使用jtable事件满足特定条件,则启用jquery-jtable隐藏字段。

如果使用jtable事件满足特定条件,则启用jquery-jtable隐藏字段。
EN

Stack Overflow用户
提问于 2021-03-13 14:52:29
回答 1查看 90关注 0票数 0
代码语言:javascript
复制
My aim is to only show bank related field if selected category is bank.

$(‘#EditDataTableDaybook’).jtable({ title:'Accounts‘,分页: true,//Enable分页pageSize: 25,//Set页面大小(默认值: 10)排序: true,//Enable排序defaultSorting:'DaybookCode DSC',

代码语言:javascript
复制
actions: {
    listAction: '/adminaccounts/get_daybook_list',
    updateAction: '/adminaccounts/update_daybook_entry',
},
fields: {
    Daybook_key: {
        title: 'Daybook_key',
        key : true ,
        width: '3%',
        edit: false,
        visibility: 'hidden'
    },
    DaybookCode: {
        title: 'Sr.No.',
        create: true,
        edit: false,
        width: '5%',
        key: true,
        sorting: true,
    },
    DaybookGroup: {
            title: 'Daybook Group',
            width: '5%',
    },
    GroupName: {
        title: 'Group Name',
        width: '5%',
    },
    DaybookName: {
        title: 'Daybook Name',
        width: '10%',
    },
    ShortForm: {
        edit: false,
        title: 'Short Form',
        width: '8%',
    },
    DaybookType: {
        // edit: false,
        title: 'Type',
        width: '8%',
        type: 'radiobutton',
        visibility : 'show',
        options: {'CA':'Cash',
                  'BN':'Bank',
                  'JV':'Journal Voucher',
                  'BJ':'Bill Journal',
                  'AB':'Adjustment Bill',
                  'DN':'Debit Note',
                  'CN':'Credit Note'},
    },

这些字段用于初始化account_name:{ type:‘隐藏’,标题:‘帐户名称’,宽度:'10%',},account_number:{ type:‘隐藏’,标题:‘帐户号’,宽度:'10%',},ifsc_code:{ type:‘隐藏’,标题:'Ifsc代码‘,宽度:'10%',},

代码语言:javascript
复制
},
recordUpdated: function(event,data) {
    console.log(data.serverResponse.error_message)
    error_message = data.serverResponse.error_message
    if (error_message != ''){
        alert("Zoho Book Error: " + error_message)
    }
    console.log(event)
    $.ajax({type:'POST',
        url: '/adminaccounts/get_daybook_list',
        success: function(responseText){
            console.log(responseText)
            $('#EditDataTableDaybooks').jtable('load');
        },
    });
},
formCreated: function(event, data) {
    console.log(event);
    console.log(data);
    console.log(data.record.DaybookType);
    if (data.record.DaybookType == 'BN'){
        console.log('logic to enable hidden fields');
}

区块报价

代码语言:javascript
复制
}

});

EN

回答 1

Stack Overflow用户

发布于 2021-03-23 21:06:55

您的需求没有内置的方法,但是您正确地确定了formCreated事件处理程序是添加一些代码的正确位置。

值得了解jTable创建的添加/编辑表单的DOM结构。

任何定义为隐藏的jTable字段,都是简单地创建为类型隐藏的输入字段,而不应用样式或样式结构。

所有非隐藏字段都是用<div class="jtable-input-field-container">创建的。这个div包含另外两个div,一个用于字段标签/标题<div class="jtable-input-label">,另一个用于包含输入元素<div class="jtable-input jtable-text-input">

此外,如果inputClass是在jTable字段定义中定义的,那么该类将出现在输入字段本身中。

因此,按照原来的计划,您将需要删除隐藏字段,并创建一个div和输入的结构,这些结构看起来将类似于jTable表单的其余部分。

倒转思维,完全定义每个字段,您可以使用formCreated函数删除、隐藏或禁用要取消的字段。

最简单的方法是给出所有“隐藏”字段( inputClass: "hideableInput", ),那么formCreated函数中所需要的就是禁用字段的data.form.find('.hideableInput').attr('disabled', true);

data.form.find('.hideableInput').closest('div.jtable-input-field-container').remove();将从表单中完全删除字段容器,因此用户看不到任何内容,也不会向服务器发送任何参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66614840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档