日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

ExtJS中如何根据combobox的选值,动态地决定组件的显隐?

發(fā)布時(shí)間:2023/12/15 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ExtJS中如何根据combobox的选值,动态地决定组件的显隐? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?來(lái)源:http://www.javaeye.com/problems/3168

ExtJS所做的Form,需要根據(jù)combobox選擇值,來(lái)決定后面所顯示的組件。辦法是動(dòng)態(tài)地加在FormPanel中的items中。

如果選擇年報(bào)表,則下面的可選的條件輸入框只有年。

如果選擇日?qǐng)?bào)表,則可選的條件輸入框只有日期。

如果選擇月報(bào)表,則可選的條件輸入框有年和月兩項(xiàng)。


但下面的代碼在實(shí)際中,第一次選月報(bào)表,顯示年和月兩項(xiàng),第二次選年報(bào)表,卻不會(huì)隱藏月這項(xiàng)。


請(qǐng)教下面的代碼問(wèn)題出現(xiàn)在哪?


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查詢選擇框</title>
?? ?<link rel="stylesheet" type="text/css" href="ExtJS/resources/css/ext-all.css">
?? ?<script type="text/javascript" src="ExtJS/adapter/ext/ext-base.js"></script>
?? ?<script type="text/javascript" src="ExtJS/ext-all.js"></script>
?? ?<script type="text/javascript" src="ExtJS/locale/ext-lang-zh_CN.js"></script>
</head>
<body>

<script type="text/javascript">

Ext.BLANK_IMAGE_URL = 'resources/s.gif';
Ext.onReady(function(){
?? ?Ext.QuickTips.init();
?? ?Ext.form.Field.prototype.msgTarget = 'side';

?? ?// 選擇框
?? ?var reportCategory = new Ext.form.ComboBox({
?? ??? ?fieldLabel: '報(bào)表類型',
?? ??? ?hiddenName:'reportCategory1',
?? ??? ?store: new Ext.data.SimpleStore({
?? ??? ??? ?fields: ['num', 'name'],
?? ??? ??? ?data : [[1,'年報(bào)表'],[2,'月報(bào)表'],[3,'日?qǐng)?bào)表']]
?? ??? ?}),
?? ??? ?valueField:'num',
?? ??? ?displayField:'name',
?? ??? ?typeAhead: true,
?? ??? ?mode: 'local',
?? ??? ?triggerAction: 'all',
?? ??? ?emptyText:'請(qǐng)選擇...',
?? ??? ?selectOnFocus:true,
?? ??? ?width:120
?? ?});

?? ?var dtYear = new Ext.form.NumberField({
?? ??? ?fieldLabel:'年',
?? ??? ?name:'dtYear1',
?? ??? ?allowBlank:false,
?? ??? ?allowDecimals:false,
?? ??? ?allowNegative:false,
?? ??? ?value:2008,
?? ??? ?minValue:2000,
?? ??? ?maxValue:2100,
?? ??? ?selectOnFocus:true,
?? ??? ?validationEvent:false,
?? ??? ?width:120
?? ?});

?? ?var dtMonth = new Ext.form.NumberField({
?? ??? ?fieldLabel:'月',
?? ??? ?name:'dtMonth1',
?? ??? ?allowBlank:false,
?? ??? ?allowDecimals:false,
?? ??? ?allowNegative:false,
?? ??? ?minValue:1,
?? ??? ?maxValue:12,
?? ??? ?selectOnFocus:true,
??? ??? ?validationEvent:false,
?? ??? ?width:120
?? ?});

?? ?var dtDay = new Ext.form.DateField({
?? ??? ?fieldLabel: '日期',
?? ??? ?name: 'dtDay1',
?? ??? ?width:120,
?? ??? ?validationEvent:false,
?? ??? ?allowBlank:false
?? ?});
?? ?
?? ?var fs = new Ext.form.FormPanel({
?? ??? ?frame: true,
?? ??? ?labelAlign: 'right',
?? ??? ?labelWidth: 60,
?? ??? ?autoHeight:true,
?? ??? ?autoWidth:true,
?? ??? ?onSubmit: Ext.emptyFn,
?? ??? ?submit: function(){
?? ??? ??? ?this.getEl().dom.method='POST';
?? ??? ??? ?this.getEl().dom.action='search.jsp';
?? ??? ??? ?this.getEl().dom.submit();
?? ??? ?},
?? ??? ?waitMsgTarget: true,
?? ??? ?items: reportCategory
?? ?});

?? ?fs.addButton('確定', function(){
?? ??? ?fs.getForm().submit();
?? ?});

??? reportCategory.on('select',function(combo, record, index){
?? ??? ?fs.items.clear(); // 將items清除,希望同步到頁(yè)面,卻不成功。
?? ??? ?fs.items.add(reportCategory);
?? ??? ?switch (newv) {
?? ??? ??? ?case 0:? // 年報(bào)表, 選擇年
?? ??? ??? ??? ?fs.items.add(dtYear);
?? ??? ??? ??? ?break;
?? ??? ??? ?case 1:? // 月報(bào)表, 選擇年和月
?? ??? ??? ??? ?fs.items.add(dtYear);
?? ??? ??? ??? ?fs.items.add(dtMonth);
?? ??? ??? ??? ?break;
?? ??? ??? ?case 2: // 日?qǐng)?bào)表, 選擇具體日期
?? ??? ??? ??? ?fs.items.add(dtDay);
?? ??? ??? ??? ?break;
?? ??? ?}
?? ??? ?fs.doLayout(); // 問(wèn)題: 此處顯示add的,但對(duì)原來(lái)的clear前的組件并不清除?
?? ?});

?? ?var window = new Ext.Window({
?? ??? ?title:'查詢對(duì)話框',
?? ??? ?width:260,
?? ??? ?autoHeight:true,
?? ??? ?resizable:false,
?? ??? ?layout: 'fit',
?? ??? ?plain:true,
?? ??? ?closable:false,
?? ??? ?border:false,
?? ??? ?modal:true,
?? ??? ?items: fs
?? ?});
?? ?window.show();
});

</script>

</body>
</html>

?

你可以這樣子啊,不要清除舊的items,而是設(shè)置可見(jiàn)與否:

Java代碼
  • reportCategory.on('select',function(combo,?record,?index){??
  • ????fs.items.clear();?//?將items清除,希望同步到頁(yè)面,卻不成功。??
  • ????fs.items.add(reportCategory);??
  • ????switch?(newv)?{??
  • ????????case?0:??//?年報(bào)表,?選擇年??
  • ????????????dtYear.setVisible(true);??
  • ????????????dtMonth.setVisible(false);??
  • ????????????dtDay.setVisible(false);??
  • ????????????break;??
  • ????????case?1:??//?月報(bào)表,?選擇年和月??
  • ????????????dtYear.setVisible(true);??
  • ????????????dtMonth.setVisible(true);??
  • ????????????dtDay.setVisible(false);??
  • ????????????break;??
  • ????????case?2:?//?日?qǐng)?bào)表,?選擇具體日期??
  • ????????????dtYear.setVisible(false);??
  • ????????????dtMonth.setVisible(false);??
  • ????????????dtDay.setVisible(true);??
  • ????????????break;??
  • ????}??
  • ????fs.doLayout();???
  • });??
  • reportCategory.on('select',function(combo, record, index){fs.items.clear(); // 將items清除,希望同步到頁(yè)面,卻不成功。fs.items.add(reportCategory);switch (newv) {case 0: // 年報(bào)表, 選擇年dtYear.setVisible(true);dtMonth.setVisible(false);dtDay.setVisible(false);break;case 1: // 月報(bào)表, 選擇年和月dtYear.setVisible(true);dtMonth.setVisible(true);dtDay.setVisible(false);break;case 2: // 日?qǐng)?bào)表, 選擇具體日期dtYear.setVisible(false);dtMonth.setVisible(false);dtDay.setVisible(true);break;}fs.doLayout(); }); 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的ExtJS中如何根据combobox的选值,动态地决定组件的显隐?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。