`
erichua
  • 浏览: 514561 次
  • 性别: Icon_minigender_2
  • 来自: 远方
社区版块
存档分类
最新评论

Extjs学习总结---NumberField自动加comma

阅读更多

让20000.00 变为20,00.00

听说3.0已经实现了。不过俺没有看见。

	if (Ext.form.NumberField) {
				Ext
						.apply(
								Ext.form.NumberField.prototype,
								{
									decimalPrecision :2,
									// allowNegative :false,
									allowDecimals :true
									// allowBlank : false
									,
									cls :'numReadOnly'
									// private
									,
									FormatComma :true
									// private
									,
									initEvents : function() {
										Ext.form.NumberField.superclass.initEvents
												.call(this);
										var allowed = this.baseChars + '';
										if (this.allowDecimals) {
											allowed += this.decimalSeparator;
										}
										if (this.FormatComma) {
											allowed += ",";
										}
										if (this.allowNegative) {
											allowed += "-";
										}
										this.stripCharsRe = new RegExp(
												'[^' + allowed + ']', 'gi');
										var keyPress = function(e) {
											var k = e.getKey();
											if (!Ext.isIE
													&& (e.isSpecialKey()
															|| k == e.BACKSPACE || k == e.DELETE)) {
												return;
											}
											var c = e.getCharCode();
											if (allowed.indexOf(String
													.fromCharCode(c)) === -1) {
												e.stopEvent();
											}
										};
										this.el.on("keypress", keyPress, this);
									},
									// private
									validateValue : function(value) {
										if (!Ext.form.NumberField.superclass.validateValue
												.call(this, value)) {
											return false;
										}
										if (value.length < 1) { // if it's blank
											// and textfield
											// didn't flag
											// it then it's
											// valid
											return true;
										}
										if (this.FormatComma) {
											value = this.removeCommas(String(value));
										}
										value = String(value).replace(
												this.decimalSeparator, ".");
										if (isNaN(value)) {
											this.markInvalid(String.format(
													this.nanText, value));
											return false;
										}
										var num = this.parseValue(value);
										if (num < this.minValue) {
											this.markInvalid(String
													.format(this.minText,
															this.minValue));
											return false;
										}
										if (num > this.maxValue) {
											this.markInvalid(String
													.format(this.maxText,
															this.maxValue));
											return false;
										}
										return true;
									},
									fixPrecision : function(value) {
										var nan = isNaN(value);
										if (!this.allowDecimals
												|| this.decimalPrecision == -1
												|| nan || !value) {
											return nan ? '' : value;
										}
										return parseFloat(parseFloat(value)
												.toFixed(this.decimalPrecision));
									},

									setValue : function(v) {
										v = typeof v == 'number' ? v : (String(
												this.removeCommas(v)).replace(
												this.decimalSeparator, ".")
												);
										v = isNaN(v) ? '' : String(v).replace(
												".", this.decimalSeparator);
										if (String(v).length > 0)
											v = parseFloat(v).toFixed(
													this.decimalPrecision);
										// if(this.FormatComma)
										// v=this.formatCommaStyle(v);
										Ext.form.NumberField.superclass.setValue
												.call(this, v);
										if (this.FormatComma
												&& String(v).length > 0) {
											v = this.addCommas(v);
											Ext.form.NumberField.superclass.setRawValue
													.call(this, v);
										}
									},
									parseValue : function(value) {
										if (this.FormatComma)
											value = this.removeCommas(String(value));
										value = parseFloat(String(value)
												.replace(this.decimalSeparator,
														"."));

										return isNaN(value) ? '' : value;
									},
									beforeBlur : function() {
										var v = this.parseValue(this
												.getRawValue());

										if (String(v).trim().length > 0) {
											this.setValue(this.fixPrecision(v));

										}
									}

									,
									addCommas : function(nStr) {

										nStr += '';
										if (nStr.length == 0)
											return '';
										x = nStr.split('.');
										x1 = x[0];
										x2 = x.length > 1 ? '.' + x[1] : '';
										var rgx = /(\d+)(\d{3})/;
										while (rgx.test(x1)) {
											x1 = x1.replace(rgx,
													'$1' + ',' + '$2');
										}
										return x1 + x2;

									},
									removeCommas : function(nStr) {

										nStr = nStr + '';
										var r = /(\,)/;
										while (r.test(nStr)) {
											nStr = nStr.replace(r, '');
										}
										return nStr;

									}

								});

			}
 
3
0
分享到:
评论

相关推荐

    语言程序设计资料:ExtJs学习笔记-2积分.doc

    语言程序设计资料:ExtJs学习笔记-2积分.doc

    ExtJs常用布局--layout详解实例代码

    ExtJs常用布局--layout详解实例代码: ExtJs常见的布局方式有:border、form、absolute、column、accordion、table、fit、card、anchor 另外,不常见的布局有:tab、vbox、hbox 具体使用方法可见该文件的案例代码。 ...

    extjs-620-docs.zip

    extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档

    extjs-theme-bootstrap

    "extjs-theme-bootstrap" 是针对 EXTJS4 的一个主题,它借鉴了 Bootstrap 的设计风格,让 EXTJS4 应用程序具有更加现代化和一致的外观。 Bootstrap 是一个流行的前端开发框架,由 Twitter 推出,主要用于构建响应式...

    ExtJS快速入门--传智播客--蔡世友

    ExtJS快速入门--传智播客--蔡世友

    extJs-5.0.1-gpl(part1)

    extJs-5.0.1-gpl附带sencha cmd安装程序、ruby编译包(分为32位和64位)和教程,一共四部分

    extjs2----关于extjs 的使用,操作

    描述中提到内容较为初级,适合初学者学习,这表明我们将探讨的是ExtJS的基础概念和常用组件。 首先,让我们来了解一下ExtJS的核心概念。ExtJS基于组件模型,允许开发者构建复杂的用户界面,这些组件可以是按钮、...

    extjs-620-docs.rar完全离线版

    此"extjs-620-docs.rar"压缩包包含了该版本的完全离线版API文档,旨在解决在没有网络连接或网络环境不稳定时,开发者仍然可以便捷地查阅和学习ExtJS 6.2.0的相关知识。 API 文档是任何开发者的重要工具,特别是对于...

    extjs-theme-bootstrap-master.zip

    "extjs-theme-bootstrap-master.zip" 文件很可能是ExtJS的一个主题包,它集成了Bootstrap的样式,使得ExtJS组件能够呈现出Bootstrap的经典外观。 在深入讲解这个主题之前,让我们先了解一下基础概念: 1. **ExtJS*...

    extjs-OA extjs-oa

    一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa

    extjs-docs-6.0.0-classic.part01.rar

    Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...

    ExtJS-MVC-用户列表实例

    总结起来,这个"ExtJS-MVC-用户列表实例"展示了如何使用ExtJS的MVC架构来构建一个功能完整的Web应用,包括定义数据模型、创建视图来展示数据、设置控制器来处理用户交互,以及利用Store进行数据管理。同时,...

    ExtJS-4.2.2-gpl.rar

    总结,"ExtJS-4.2.2-gpl.rar"是一个全面的学习和开发资源,涵盖了ExtJS的核心部分。通过深入研究这个压缩包中的内容,开发者不仅可以掌握ExtJS的基本用法,还能了解到高级特性和最佳实践,从而在Web开发领域取得更大...

    ExtJS----HelloWorld程序源码

    在"ExtJS----HelloWorld程序源码"中,我们将会看到如何使用ExtJS来创建一个简单的“你好,世界!”应用。以下是对这个示例中涉及的主要知识点的详细解释: 1. **引入ExtJS库**:首先,你需要在HTML文件中引入ExtJS...

    Extjs-ext-3.1.1

    licensing@extjs.com http://extjs.com/license Open Source License Ext is licensed under the terms of the Open Source GPL 3.0 license. http://www.gnu.org/licenses/gpl.html There are several FLOSS ...

    ExtJS入门教程-超级详细-共36页 完整版 PDF

    ExtJS入门教程-超级详细-共36页 完整版 PDF,电子书方便阅读和分享。

    extjs-3.0-all-src

    总之,"extjs-3.0-all-src"包含的是ExtJS 3.0的全部源代码,对学习和研究该框架的实现原理以及定制开发非常有帮助。通过理解和掌握这些知识点,开发者可以利用ExtJS 3.0创建功能强大、用户体验优秀的Web应用程序。

    extjs-620-docs-离线文档

    extjs-620-docs,6.2.0离线文档,解压后可以布署到web服务器

    extjs-7.0.0-gpl

    在"extjs-7.0.0-gpl"版本中,我们看到的是ExtJS框架的一个重要里程碑,这个版本引入了许多新特性、性能优化和兼容性的提升。 1. **组件化开发**:ExtJS 7.0.0的核心是其组件化的开发模式。组件可以是按钮、表格、...

Global site tag (gtag.js) - Google Analytics