extjs 下拉框 多级联动

下拉框所在面板,这边有有个框子的规则和正则表达式匹配,效果图如下

代码如下:

var addOfficerField = Ext.create("Ext.form.FieldSet", {
	height : 420,
	width : 350,
	border:false,
	layout : "column",
//	region: "north",
	items : [{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '姓名<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '姓名不能为空',
		maxLength : 20,  
		maxLengthText : '姓名长度不得大于20个字符长度', 
		allowBlank: false,
		id:'addnameId',
	},{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '出生日期<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '出生日期不能为空',
		allowBlank: false,
		id:'addbirthId',
	},{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '电话<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '电话不能为空',
		regex:  /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/ ,
		regexText: '电话号码格式不正确',
		allowBlank: false,
		id:'addphoneId',
	},{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '身份证<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '身份证不能为空',
		regex: /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/,
		regexText: '身份证号码格式不正确',
		allowBlank: false,
		id:'addcardId',
	},{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '邮箱<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '邮箱不能为空',
		regex: /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/,
		regexText: '邮箱格式不正确',
		allowBlank: false,
		id:'addemailId',
	},{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '供应商id<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '供应商id不能为空',
		allowBlank: false,
		id:'addsupplierId'
	},{
		xtype:'textfield',
		columnWidth :1,
		fieldLabel : '组织构架id<span style="color:red">*</span>',
		margin : '10 20 10 0',
		labelAlign:"right",
		blankText: '组织构架id不能为空',
		allowBlank: false,
		id:'addorganizationId'
	},{
		xtype:'combobox',
		editable: false,
		margin : '10 20 10 0',
		columnWidth :1,
		fieldLabel : '主站id<span style="color:red">*</span>',
		labelAlign:"right",
		store: mainStationStore,
		listeners: {
			select : function(combo, record, index){
//这边是下拉联动的代码,点击这个下拉框加载下面一个下拉框的数据,这边可以用store.load(),或者ajax获取数据                
                stationStore.load({
//				Ext.Ajax.request({
                    url: "findStation.action",
//                    async: false,
                    params: {
                        'station.mainstationid': combo.value
                    },
//                    success : function(response, options) {
//                    	stationStore.load()
//                    },
                });
//				var msg = mainStationGrid.getSelectModel().getSelection();
//				var id = msg[0].data.id;
//				stationStore.proxy.extraParams['mainstationid'] = id;
//				stationStore.load();
                }
            },
		triggerAction: 'all',
		displayField: "name", 
		valueField: "id", 
		blankText: '主站id不能为空',
		allowBlank: false,
//		mode: 'local',
//		vtype:'typeVtype',
		emptyText: "--必选,请选择--",
		id:'addmainStationId'
	},{
		xtype:'combobox',
		editable: false,
		margin : '10 20 10 0',
		columnWidth :1,
		fieldLabel : '厂站id',
		labelAlign:"right",
		store: stationStore,
		listeners: {
			select : function(combo, record, index){
				mainstationid = stationStore.data.items[0].data.mainstationid
                applicationStore.load({
                    url: "findApplication.action",  
                    params: {
                        'application.mainstationid': mainstationid,
                        'application.stationid': combo.value
                    },
                });
//				var mainstationid = stationStore.data.items[0].data.mainstationid
//				applicationStore.proxy.extraParams['mainstationid'] = mainstationid;
//				applicationStore.proxy.extraParams['stationid'] = combo.value;
//				applicationStore.load();
                }
            },
		triggerAction: 'all',
		displayField: "name", 
		valueField: "id", 
//		allowBlank: false,
//		mode: 'local',
//		vtype:'typeVtype',
		emptyText: "--可选,请选择--",
		id:'addstationId'
	},{
		xtype:'combobox',
		editable: false,
		margin : '10 20 10 0',
		columnWidth :1,
		fieldLabel : '应用id',
		labelAlign:"right",
		store: applicationStore,
		triggerAction: 'all',
		displayField: "name", 
		valueField: "id", 
//		blankText: '应用id不能为空',
//		allowBlank: false,
//		mode: 'local',
//		vtype:'typeVtype',
		emptyText: "--可选,请选择--",
		id:'addapplicationId'
	}]
});


Extjs 中,可以通过设置 `multiSelect` 属性为 `true` 来实现下拉框多选。回显则需要先获取到下拉框组件的值,然后将其赋值给需要回显的表单元素。 例如,在以下代码中,我们创建了一个下拉框组件,设置了 `multiSelect` 为 `true`,并将其添加到了表单中。当用户选择完选项后,点击保存按钮时,我们可以获取到下拉框的值,然后将其赋值给一个隐藏的表单元素,以便在下一次打开表单时进行回显。 ```javascript Ext.create('Ext.form.Panel', { title: 'My Form', items: [{ xtype: 'combo', fieldLabel: 'Choose Options', multiSelect: true, store: ['Option 1', 'Option 2', 'Option 3'], displayField: 'name', valueField: 'value' }, { xtype: 'hidden', name: 'selectedOptions' // 隐藏表单元素,用于回显 }], buttons: [{ text: 'Save', handler: function() { var form = this.up('form').getForm(); var selectedOptions = form.findField('selectedOptions'); var combo = form.findField('combo'); var value = combo.getValue(); selectedOptions.setValue(value); // 将下拉框的值赋值给隐藏表单元素 form.submit({ success: function() { Ext.Msg.alert('Success', 'Form submitted successfully.'); }, failure: function() { Ext.Msg.alert('Error', 'Form submission failed.'); } }); } }] }); ``` 在打开表单时,我们需要先获取到隐藏元素的值,然后将其赋值给下拉框组件。代码如下: ```javascript var form = Ext.create('Ext.form.Panel', { title: 'My Form', items: [{ xtype: 'combo', fieldLabel: 'Choose Options', multiSelect: true, store: ['Option 1', 'Option 2', 'Option 3'], displayField: 'name', valueField: 'value' }, { xtype: 'hidden', name: 'selectedOptions', value: ['Option 1', 'Option 2'] // 设置隐藏表单元素的初始值,用于回显 }] }); var selectedOptions = form.getForm().findField('selectedOptions').getValue(); var combo = form.getForm().findField('combo'); combo.setValue(selectedOptions); // 将隐藏表单元素的值赋值给下拉框组件 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值