一个奇怪的问题,请高手指点
|
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的字体要大,当然一些偏移量要调哦。
|


