














17ext.com上的,本来有很多,我精简了一部分,把其他国家的精简掉了,很多朋友说不显示中文,中文显示为乱码,我修改的这个好像没有乱码
此代码仅供新手学习,老鸟请绕道
效果图如下

Ext.ux.form.IconCombo.js
1
//JS脚本
2
Ext.namespace('Ext.ux.form');
3
4
Ext.ux.form.IconCombo = Ext.extend(Ext.form.ComboBox, {
5
initComponent:function() {
6
var css = '.ux-icon-combo-icon {background-repeat: no-repeat;background-position: 0 50%;width: 18px;height: 14px;}'
7
+ '.ux-icon-combo-input {padding-left: 25px;}'
8
+ '.x-form-field-wrap .ux-icon-combo-icon {top: 4px;left: 5px;}'
9
+ '.ux-icon-combo-item {background-repeat: no-repeat ! important;background-position: 3px 50% ! important;padding-left: 24px ! important;}'
10
+ ".ux-flag-br {background-image:url(img/186.gif) !important;}"
11
+ ".ux-flag-us {background-image:url(img/186.gif) !important;}"
12
;
13
14
Ext.util.CSS.createStyleSheet(css, this._cssId);
15
16
Ext.apply(this, {
17
tpl: '<tpl for=".">'
18
+ '<div class="x-combo-list-item ux-icon-combo-item '
19
+ '{' + this.iconClsField + '}">'
20
+ '{' + this.displayField + '}'
21
+ '</div></tpl>'
22
});
23
24
Ext.ux.form.IconCombo.superclass.initComponent.apply(this, arguments);
25
26
} // 初始化控件
27
28
,onRender:function(ct, position) {
29
// 回调父组件onrender
30
Ext.ux.form.IconCombo.superclass.onRender.apply(this, arguments);
31
32
// adjust styles
33
this.wrap.applyStyles({position:'relative'});
34
this.el.addClass('ux-icon-combo-input');
35
36
// 给icon加div
37
this.icon = Ext.DomHelper.append(this.el.up('div.x-form-field-wrap'), {
38
tag: 'div', style:'position:absolute'
39
});
40
} // onRender函数
41
42
,afterRender:function() {
43
Ext.ux.form.IconCombo.superclass.afterRender.apply(this, arguments);
44
if(undefined !== this.value) {
45
this.setValue(this.value);
46
}
47
} // afterRender函数
48
,setIconCls:function() {
49
var rec = this.store.query(this.valueField, this.getValue()).itemAt(0);
50
if(rec && this.icon) {
51
this.icon.className = 'ux-icon-combo-icon ' + rec.get(this.iconClsField);
52
}
53
} //函数样式
54
55
,setValue: function(value) {
56
Ext.ux.form.IconCombo.superclass.setValue.call(this, value);
57
this.setIconCls();
58
} // 设置值
59
60
,_cssId : 'ux-IconCombo-css'
61
62
});
63
64
// 注册xtype
65
Ext.reg('iconcombo', Ext.ux.form.IconCombo);
Ext.ux.LoginWindow.js
1
//JS脚本
2
3
Ext.ux.LoginWindow = function(config) {
4
Ext.apply(this, config);
5
var css = "#login-logo .x-plain-body {background:#f9f9f9 url('" + this.basePath + "/" + this.winBanner + "') no-repeat;}"
6
+ "#login-form {background: " + this.formBgcolor + " none;}"
7
+ ".ux-auth-header-icon {background: url('"
8
+ this.basePath
9
+ "/locked.gif') 0 4px no-repeat !important;}"
10
+ ".ux-auth-form {padding:10px;}"+ ".ux-auth-login {background-image: url('" +
11
this.basePath + "/key.gif') !important}"
12
+ ".ux-auth-close {background-image: url('" + this.basePath + "/close.gif') !important}";
13
14
Ext.util.CSS.createStyleSheet(css, this._cssId);
15
// 给登录窗体加事件
16
this.addEvents({
17
'show': true,
18
'reset': true,
19
'submit': true,
20
'submitpass': true
21
});
22
Ext.ux.LoginWindow.superclass.constructor.call(this, config);
23
24
this._logoPanel = new Ext.Panel({
25
baseCls: 'x-plain',
26
id: 'login-logo',
27
region: 'center'
28
});
29
//给元素添加参数
30
this.usernameId = Ext.id();
31
this.passwordId = Ext.id();
32
this.emailId = Ext.id();
33
this.emailFieldsetId = Ext.id();
34
this.languageId = Ext.id();
35
this._loginButtonId = Ext.id();
36
this._resetButtonId = Ext.id();
37
this._passwordButtonId = Ext.id();
38
this._WinPasswordButtonId = Ext.id();
39
this._formPanel = new Ext.form.FormPanel({
40
region: 'south',
41
border: false,
42
bodyStyle: "padding: 5px;",
43
baseCls: 'x-plain',
44
id: 'login-form',
45
waitMsgTarget: true,
46
labelWidth: 80,
47
defaults: {
48
width: 300
49
},
50
baseParams: {
51
task: 'login'
52
},
53
listeners: {
54
'actioncomplete': {
55
fn: this.onSuccess,
56
scope: this
57
},
58
'actionfailed': {
59
fn: this.onFailure,
60
scope: this
61
}
62
},
63
height: 110,
64
items: [{
65
xtype: 'textfield',
66
id: this.usernameId,
67
name: this.usernameField,
68
fieldLabel: this.usernameLabel,
69
vtype: this.usernameVtype,
70
validateOnBlur: false,
71
allowBlank: false
72
},
73
{
74
xtype: 'textfield',
75
inputType: 'password',
76
id: this.passwordId,
77
name: this.passwordField,
78
fieldLabel: this.passwordLabel,
79
vtype: this.passwordVtype,
80
validateOnBlur: false,
81
allowBlank: false
82
},
83
{
84
xtype: 'iconcombo',
85
id: this.languageId,
86
hiddenName: this.languageField,
87
fieldLabel: this.languageLabel,
88
store: new Ext.data.SimpleStore({
89
fields: ['languageCode', 'languageName', 'countryFlag'],
90
data: [['enus', '中文 - 中华人民共和国', 'ux-flag-us']]
91
}),
92
valueField: 'languageCode',
93
value: this.defaultLanguage,
94
displayField: 'languageName',
95
iconClsField: 'countryFlag',
96
triggerAction: 'all',
97
editable: false,
98
mode: 'local'
99
}]
100
});
101
Ext.getCmp(this.languageId).on('select',
102
function() {
103
this.defaultLanguage = Ext.getCmp(this.languageId).getValue(); //var lang = this.defaultLanguage;
104
this.setlanguage();
105
},
106
this);
107
this._formPasswordPanel = new Ext.form.FormPanel({
108
bodyStyle: "padding: 5px;",
109
id: 'password-form',
110
waitMsgTarget: true,
111
labelWidth: 50,
112
autoHeight: true,
113
buttonAlign: 'center',
114
baseParams: {
115
task: 'forgotPassword'
116
},
117
items: [{
118
layout: 'form',
119
border: false,
120
items: [{
121
xtype: 'fieldset',
122
title: this.emailFieldset,
123
id: this.emailFieldsetId,
124
autoHeight: true,
125
items: [{
126
xtype: 'textfield',
127
vtype: this.emailVtype,
128
id: this.emailId,
129
name: this.emailField,
130
fieldLabel: this.emailLabel,
131
vtype: this.emailVtype,
132
validateOnBlur: false,
133
anchor: '98%',
134
allowBlank: false
135
}]
136
}]
137
}],
138
buttons: [{
139
text: this.passwordButton,
140
id: this._WinPasswordButtonId,
141
width: 100,
142
handler : this.Passwordsubmit,
143
scope: this
144
}]
145
});
146
var buttons = [{
147
id: this._loginButtonId,
148
text: this.loginButton,
149
handler: this.submit,
150
scale: 'medium',
151
scope: this
152
}];
153
var keys = [{
154
key: [10, 13],
155
//按Enter键确定
156
handler: this.submit,
157
scope: this
158
}];
159
if (typeof this.passwordButton == 'string') {
160
buttons.push({
161
id: this._passwordButtonId,
162
text: this.passwordButton,
163
handler: this.password,
164
scale: 'medium',
165
scope: this
166
});
167
}
168
if (typeof this.resetButton == 'string') {
169
buttons.push({
170
id: this._resetButtonId,
171
text: this.resetButton,
172
handler: this.reset,
173
scale: 'medium',
174
scope: this
175
});
176
keys.push({
177
key: [27],
178
//ESC键重置
179
handler: this.reset,
180
scope: this
181
});
182
}
183
//Login窗体
184
this._window = new Ext.Window({
185
width: 429,
186
height: 280,
187
closable: false,
188
resizable: false,
189
draggable: true,
190
modal: this.modal,
191
iconCls: 'ux-auth-header-icon',
192
title: this.title,
193
layout: 'border',
194
bodyStyle: 'padding:5px;',
195
buttons: buttons,
196
buttonAlign: 'center',
197
keys: keys,
198
plain: false,
199
items: [this._logoPanel, this._formPanel]
200
});
201
this._windowPassword = new Ext.Window({
202
width: 350,
203
height: 160,
204
closable: true,
205
resizable: false,
206
draggable: true,
207
modal: this.modal,
208
iconCls: 'ux-auth-header-icon',
209
title: this.Passwordtitle,
210
bodyStyle: 'padding:5px;',
211
keys: keys,
212
closeAction: 'hide',
213
items: [this._formPasswordPanel]
214
});
215
this._window.on('show',
216
function() {
217
this.setlanguage();
218
Ext.getCmp(this.usernameId).focus(false, true);
219
this.fireEvent('show', this);
220
},
221
this);
222
};
223
Ext.extend(Ext.ux.LoginWindow, Ext.util.Observable, {
224
225
title: '',
226
227
Passwordtitle: '',
228
229
emailFieldset: '',
230
231
waitMessage: '',
232
233
loginButton: '',
234
235
passwordButton: '',
236
237
resetButton: '',
238
239
usernameLabel: '',
240
241
usernameField: 'username',
242
243
usernameVtype: 'alphanum',
244
245
emailLabel: '',
246
247
emailField: 'email',
248
249
emailVtype: 'email',
250
251
passwordLabel: '',
252
253
passwordField: 'password',
254
255
passwordVtype: 'alphanum',
256
257
languageField: 'lang',
258
259
languageLabel: '',
260
261
url: '',
262
263
emailUrl: '',
264
265
locationUrl: '',
266
267
basePath: 'img',
268
269
winBanner: '',
270
271
formBgcolor: '',
272
273
method: 'post',
274
275
modal: false,
276
277
_cssId: 'ux-LoginWindow-css',
278
279
_logoPanel: null,
280
281
_formPanel: null,
282
283
_window: null,
284
285
_windowPassword: null,
286
287
show: function(el) {
288
this._window.show(el);
289
},
290
291
password: function(el) {
292
this._windowPassword.show(el);
293
},
294
295
reset: function() {
296
if (this.fireEvent('reset', this)) {
297
this._formPanel.getForm().reset();
298
}
299
},
300
301
defaultLanguage: 'enus ',
302
303
setlanguage: function() {
304
Ext.override(Ext.form.Field, {
305
setFieldLabel: function(text) {
306
if (this.rendered) {
307
this.el.up('.x-form-item', 10, true).child('.x-form-item-label').update(text);
308
} else {
309
this.fieldLabel = text;
310
}
311
}
312
});
313
if (this.defaultLanguage == 'enus') {
314
this._window.setTitle('授权登录 v1.1.2.3');
315
this._windowPassword.setTitle('忘记密码');
316
Ext.getCmp(this._loginButtonId).setText('登录');
317
Ext.getCmp(this._passwordButtonId).setText('恢复密码');
318
Ext.getCmp(this._resetButtonId).setText('重置');
319
Ext.getCmp(this._WinPasswordButtonId).setText('发送');
320
Ext.getCmp(this.emailId).setFieldLabel('Email');
321
Ext.getCmp(this.emailFieldsetId).setTitle('输入Email');
322
Ext.getCmp(this.usernameId).setFieldLabel('用户名:');
323
Ext.getCmp(this.passwordId).setFieldLabel('密码:');
324
Ext.getCmp(this.languageId).setFieldLabel('语言:');
325
this.waitMessage = '正在登录
';
326
}
327
},
328
329
330
submit : function () {
331
var form = this._formPanel.getForm();
332
333
if (form.isValid())
334
{
335
Ext.getCmp(this._loginButtonId).disable();
336
if(Ext.getCmp(this._cancelButtonId)) {
337
Ext.getCmp(this._cancelButtonId).disable();
338
}
339
if (this.fireEvent('submit', this, form.getValues()))
340
{
341
form.submit ({
342
url : this.url,
343
method : this.method,
344
waitMsg : this.waitMessage,
345
success : this.onSuccess,
346
failure : this.onFailure,
347
scope : this
348
});
349
}
350
}
351
},
352
353
354
Passwordsubmit : function () {
355
var form = this._formPasswordPanel.getForm();
356
357
if (form.isValid())
358
{
359
Ext.getCmp(this._WinPasswordButtonId).disable();
360
if (this.fireEvent('submitpass', this, form.getValues()))
361
{
362
form.submit ({
363
url : this.emailUrl,
364
method : this.method,
365
waitMsg : this.waitMessage,
366
success : this.onEmailSuccess,
367
failure : this.onEmailFailure,
368
scope : this
369
});
370
}
371
}
372
},
373
374
//登录成功事件
375
onSuccess: function(form, action) {
376
if (action && action.result) {
377
window.location = this.locationUrl;
378
}
379
},
380
381
onFailure: function(form, action) {
382
// enable buttons
383
Ext.getCmp(this._loginButtonId).enable();
384
if (Ext.getCmp(this._resetButtonId)) {
385
Ext.getCmp(this._resetButtonId).enable();
386
}
387
},
388
389
onEmailSuccess: function(form, action) {
390
if (action && action.result) {
391
Ext.MessageBox.show({
392
title: '消息',
393
msg: '处理失败',
394
buttons: Ext.MessageBox.OK,
395
icon: Ext.MessageBox.INFO
396
});
397
}
398
},
399
400
onEmailFailure: function(form, action) {
401
Ext.getCmp(this._WinPasswordButtonId).enable();
402
Ext.MessageBox.show({
403
title: '消息',
404
msg: '处理失败',
405
buttons: Ext.MessageBox.OK,
406
icon: Ext.MessageBox.INFO
407
});
408
}
409
});
410
以上代码并非完整修改,只是实现了中文显示和一个登录过程,代码并非原创,请关注17ext
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。