一个奇怪的问题,请高手指点

yunzhongzi 2008-06-16

    最近学习Ext,对它的一些功能真是着迷。但在学的过程中碰到了小小的问题,百思不得其解。详细过程如下,先建立html 文件 myform.html,其代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>用户管理</title>
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="queue.css">
<script type="text/javascript" src="adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="myform.js"></script>
</head>
<body>
<h1>用户管理</h1>
<div id="user-list"></div>
<br>
<div id="user-form" ></div>
<br>

</body>
</html>

 

  再建立js文件,myform.js,其代码如下:

Ext.onReady(function(){
	Ext.QuickTips.init();    
  Ext.form.Field.prototype.msgTarget = 'side';  
  Date.dayNames = [    
   "日",    
   "一",    
   "二",    
   "三",    
   "四",    
   "五",    
   "六"   
];   

if(Ext.DatePicker){    
   
   Ext.apply(Ext.DatePicker.prototype, {    
   
      todayText         : "今天",    
   
      minText           : "日期在最小日期之前",    
   
      maxText           : "日期在最大日期之后",    
   
      disabledDaysText  : "",    
   
      disabledDatesText : "",    
   
      monthNames      : Date.monthNames,    
   
      dayNames          : Date.dayNames,         
   
      nextText          : '下月 (Control+Right)',    
   
      prevText          : '上月 (Control+Left)',    
   
      monthYearText     : '选择一个月 (Control+Up/Down 来改变年)',    
   
      todayTip          : "{0} (Spacebar)",    
   
      okText            : "确定",    
   
      cancelText        : "取消",    
   
      format            : "y年m月d日"   
   
   });    
   
}   

if(Ext.form.DateField){    
   Ext.apply(Ext.form.DateField.prototype, {    
      disabledDaysText  : "禁用",    
      disabledDatesText : "禁用",    
      minText           : "该输入项的日期必须在 {0} 之后",    
      maxText           : "该输入项的日期必须在 {0} 之前",    
      invalidText       : "{0} 是无效的日期 - 必须符合格式: {1}",    
      format            : "Y-m-d"   
   });    
}   
	
	var simpleForm = new Ext.FormPanel({    
   
    labelAlign: 'left',    
   
    title: '表单例子',    
   
    buttonAlign:'right',    
   
    bodyStyle:'padding:5px',    
   
    width: 600,    
   
    frame:true,    
   
    labelWidth:80,    
   
    items:[{
    	        layout:'column',    
              border:false,    
              labelSeparator:':',   
             
              items:
              [   //[NO1_START
                {   
              	   columnWidth:0.50,    
                   layout: 'form',    
                   border:false,    
                   items: 
                   [{    
                       xtype:'textfield',    
                       fieldLabel: '姓名',    
                       name: 'name',    
                       anchor:'90%'    
                   }]    
                }
                ,
                {    
                    columnWidth:.3,    
                    layout: 'form', 
                    
                       
                    border:false,    
                    items: 
                      [{    
                        style:'margin-top:5px',    
                        xtype:'radio',    
                        //labelStyle:'width:100',
                        fieldLabel: '性别',    
                        boxLabel:'男',    
                        name: 'sex',    
                        //checked:true,    
                        inputValue:'男',    
                        anchor:'90%'   
                      }]    
                },
                {    
                    columnWidth:.20,    
                    layout: 'form',    
                    labelWidth:0,    
                    labelSeparator:'',    
                    hideLabels:true,    
                    border:false,      
                    items: 
                      [{    
                        style:'margin-top:5px',    
                        xtype:'radio',    
                        fieldLabel: '',    
                        boxLabel:'女',    
                        name: 'sex',    
                        checked:true,    
                        inputValue:'女',    
                        anchor:'95%'   
                      }]    
                }
                ,
                {    
                  columnWidth:.50,    
                  layout: 'form',    
                  border:false,    
                  items: 
                  [{    
                    xtype:'combo',    
                    store: new Ext.data.SimpleStore(    
                                         {    
                                           fields: ["retrunValue", "displayText"],    
                                           data: [[1,'小学'],[2,'初中'],[3,'高中'],[4,'中专'],[5,'大专'],[6,'大学']]    
                                         }),    
                    valueField :"retrunValue",    
                    displayField: "displayText",    
                    mode: 'local',    
                    forceSelection: true,    
                    blankText:'请选择学历',    
                   // itemCls:'age-field',
                   // clearCls:'allow-float', 
                    emptyText:'选择学历',    
                    hiddenName:'education',    
                    editable: false,    
                    triggerAction: 'all',    
                    allowBlank:false,    
                    fieldLabel: '学历',    
                    name: 'education',    
                    anchor:'90%'   
                  }]    
               }  
               ,
                {    
                   columnWidth:.50,    
                   layout: 'form',    
                   border:false,    
                   items: [{    
                     xtype:'datefield',    
                     fieldLabel: '出生日期',    
                     name: 'birthday',    
                     anchor:'90%'   
                          }]    
                }   
                
                
               
                

              
              ] //[NO1_END
    	
    	
    	}]
       
   
});    
   
simpleForm.render("user-form");   

	
	
	
	
	});

 

却出现如图所示效果:

问题截图

 

      存在两个问题。 单选框标签"男"和单选框靠的太近。好像缺少 text-align:left。学历这一列应该是顶格(左对齐)显示,现在却显示在第二列,左边留了很多空。不知为什么,“学历”这一行和它的上一行有联系。因为上一行分两列,“姓名”,“性别”,各占50%。儿学历这一列也占50%,如果把学历改位占51%,则它就顶格显示。也就是说,“学历”这一列的开始位置是上面那一行的第二列。这是怎么回事,望各位能帮助解答,谢谢

 

yunzhongzi 2008-06-17
   还以为这里的分为很好,进来之后才大失所望!
earthsky 2008-06-17
yunzhongzi
有可能是浏览器的问题,
我把你的例子运行了一下,没有出现问题呀,firefox浏览器
yunzhongzi 2008-06-17
是的,在firefox下是没问题的。但在Ie6上,ie7上都是有问题的。看来,也没什么办法了。谢谢这位仁兄!
equalto 2008-06-24
布局规划的有点乱.

建议这样布置:
① 大的布局,column,左右0.5平分;
② 每列里面,从上到下顺序的布置
③ checkbox的,单独设置.

这里是范例代码:
Ext.getBody().update('');

new Ext.Panel({
layout : 'column',
title : 'Column Panel',
renderTo : document.body,
items : [{
columnWidth : .5,
layout : 'form',
border : false,
labelWidth : 100,
items : [{
xtype : 'textfield',
fieldLabel : 'field1'
}, {
xtype : 'textfield',
fieldLabel : 'field2'
}]
}, {
columnWidth : .5,
border : false,
items : [new Ext.Panel({
layout : 'column',
border : false,
items : [{
xtype : 'label',
text : 'checkbox',
width : 100
}, {
columnWidth : .4,
border : false,
items : [{
xtype : 'checkbox',
boxLabel : 'Male'
}]
}, {
columnWidth : .4,
border : false,
items : [{
xtype : 'checkbox',
boxLabel : 'Female'
}]
}]
}), {
layout : 'form',
border : false,
labelWidth : 100,
items : [{
xtype : 'textfield',
fieldLabel : 'field3'
}, {
xtype : 'textfield',
fieldLabel : 'field4'
}]
}]
}]
})

在2.1版本上跑,label组件在这个版本里才有.

另外说明的是:在column layout中(其实也包括其它的layout),对于复杂的field,都会有问题,原因是正式的el对象要产生一个wrap对象来包裹,而wrap对象,却没能继承该有的cls和其它的属性.因此要用个container将它包裹起来,以保证布局的完整.
cheng022074 2008-06-29
这个典型的字符集问题,一般改为UTF-8就没有问题了,不过我已经通过修改一些EXT-all.css的CSS设置,已经解决了这个所有field底边没有的问题,还是布局问题,原因很简单,GBK的字体要比UTF的字体要大,当然一些偏移量要调哦。
Global site tag (gtag.js) - Google Analytics