有一个表格,我有两个组合框,每个组合框有两个组合框。第一个组框用于支付押金,第二个用于最终支付。每个组框中的第一个组合框是付款请求,第二个是强制付款。但是您无法将存款付款和所需付款设置为强制性。
因此,我一直在尝试使用VTypes来检查和比较两个必需的组合框,并在它们都设置为YES时发出消息。我无法使用field,'(form')。down('#'+ field.pmtField)获取另一个组合框的内容。 (其中pmtField在项目中定义。)
以下是代码:
(Ext.myapplication扩展Ext.grid.Panel)
var form=new Ext.myapplication(
{
layout : {type: 'vbox', align: 'stretch'},
border : false,
items:
[
{
xtype: 'fieldset',
title: 'Deposit Requirements',
items:
[
{
xtype : 'fieldcontainer',
layout:{type: 'hbox'},
border: 0,
items:
[
{
xtype : 'combobox',
name : 'deposit_request_flag',
labelAlign : 'top',
inputWidth : 30,
fieldLabel : 'Requested',
labelStyle : 'font-weight:bold',
valueField : 'deposit_request_flag',
editable : false,
value : 'f',
store : [['t','YES'],['f','NO']]
},
{
xtype : 'combobox',
name : 'deposit_required_flag',
labelAlign : 'top',
inputWidth : 30,
fieldLabel : 'Required',
labelStyle : 'font-weight:bold',
valueField : 'deposit_required_flag',
editable : false,
vtype : 'depositFlagCheck',
pmtField : 'payment_required_flag',
value : 'f',
store : [['t','YES'],['f','NO']]
}
]
}
]
},
{
xtype: 'fieldset',
title: 'Payment Requirements',
items:
[
{
xtype : 'fieldcontainer',
layout:{type: 'hbox'},
border: 0,
items:
[
{
xtype : 'combobox',
name : 'payment_request_flag',
labelAlign : 'top',
fieldLabel : 'Requested',
labelStyle : 'font-weight:bold',
valueField : 'payment_request_flag',
editable : false,
value : 'f',
store : [['t','YES'],['f','NO']]
},
{
xtype : 'combobox',
name : 'payment_required_flag',
labelAlign : 'top',
fieldLabel : 'Required',
labelStyle : 'font-weight:bold',
valueField : 'payment_required_flag',
vtype : 'paymentFlagCheck',
depField : 'deposit_required_flag',
editable : false,
value : 'f',
store : [['t','YES'],['f','NO']]
}
]
}
]
}
]
});
以下是我的VTypes的定义:
Ext.QuickTips.init();
Ext.apply(Ext.form.field.VTypes, {
depositFlagCheck : function(val, field) {
var paymentFlag = field.up('form').up('form').down('#' + field.pmtField);
if (val == 'YES') {
if (paymentFlag.getValue() == 't') {
return false;
}
}
return true;
},
depositFlagCheckText : 'You cannot require both dep and full payment amount.',
paymentFlagCheck : function(val, field) {
var depositFlag = field.up('form').down('#' + field.depField);
if (val == 'YES') {
if (depositFlag.getValue() == 't') {
return false;
}
}
return true;
},
paymentFlagCheckText : 'Still cannot do it!'
});
答案 0 :(得分:1)
尝试按照并告诉我结果。在这里,我添加了id
这两个组件,然后尝试通过getValue()
方法获取组件值。
(Ext.myapplication extends Ext.grid.Panel)
var form=new Ext.myapplication(
{
layout : {type: 'vbox', align: 'stretch'},
border : false,
items:
[
{
xtype: 'fieldset',
title: 'Deposit Requirements',
items:
[
{
xtype : 'fieldcontainer',
layout:{type: 'hbox'},
border: 0,
items:
[
{
xtype : 'combobox',
name : 'deposit_request_flag',
labelAlign : 'top',
inputWidth : 30,
fieldLabel : 'Requested',
labelStyle : 'font-weight:bold',
valueField : 'deposit_request_flag',
editable : false,
value : 'f',
id : 'deposit_request_flag',
store : [['t','YES'],['f','NO']]
},
{
xtype : 'combobox',
name : 'deposit_required_flag',
labelAlign : 'top',
inputWidth : 30,
fieldLabel : 'Required',
labelStyle : 'font-weight:bold',
valueField : 'deposit_required_flag',
editable : false,
vtype : 'depositFlagCheck',
pmtField : 'payment_required_flag',
value : 'f',
id : 'deposit_required_flag',
store : [['t','YES'],['f','NO']]
}
]
}
]
},
{
xtype: 'fieldset',
title: 'Payment Requirements',
items:
[
{
xtype : 'fieldcontainer',
layout:{type: 'hbox'},
border: 0,
items:
[
{
xtype : 'combobox',
name : 'payment_request_flag',
labelAlign : 'top',
fieldLabel : 'Requested',
labelStyle : 'font-weight:bold',
valueField : 'payment_request_flag',
editable : false,
value : 'f',
store : [['t','YES'],['f','NO']]
},
{
xtype : 'combobox',
name : 'payment_required_flag',
labelAlign : 'top',
fieldLabel : 'Required',
labelStyle : 'font-weight:bold',
valueField : 'payment_required_flag',
vtype : 'paymentFlagCheck',
depField : 'deposit_required_flag',
editable : false,
value : 'f',
store : [['t','YES'],['f','NO']]
}
]
}
]
}
]
});
Ext.QuickTips.init();
Ext.apply(Ext.form.field.VTypes, {
var depVal = Ext.getCmp('deposit_request_flag').getValue(),
payVal = Ext.getCmp('deposit_required_flag').getValue();
depositFlagCheck : function() {
if (depVal == 'YES' && payVal == 't') {
return false;
}
return true;
}