数字输入框(价格输入框)

html代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>价格录入限定</title>
<script type="text/javascript" src="static/commons/js/jquery-2.0.3.min.js" ></script>
<script type="text/javascript" src="amount.js" ></script>
<script>
	$(function(){
		$("input[name=city]").amount();
	});
</script>
</head>
<body>
<input type="text" name="city" value="" max="99996" int="false" />

<input type="text" name="city" value="" max="99998"  int="false" />

<input type="text" name="city" value="" max="999995"  int="false" />
</body>
</html>

js代码:

(function($) {

	$.fn.amount = function() {
		/**
		 * 实时动态强制更改用户录入
		 * arg1 inputObject
		 **/
		return this.each(function() {
			var $this = $(this);
			var isInput = $this.is(‘input‘);
			var _events = [];
			var len = $this.attr("max").split(".")[0].length;
			var isInt = $this.attr("int") == "true" ? true : false;
			_attachEvents();

			function _attachEvents() {
				_detachEvents();
				if (isInput) { // single input
					_events = [
						[$this, {
							blur: $.proxy(overFormat, $this),
							keyup: $.proxy(keyupEv, $this)
						}]
					];
				}
				for (var i = 0, el, ev; i < _events.length; i++) {
					el = _events[i][0];
					ev = _events[i][1];
					el.on(ev);
				}
			}

			function _detachEvents() {
				for (var i = 0, el, ev; i < _events.length; i++) {
					el = _events[i][0];
					ev = _events[i][1];
					el.off(ev);
				}
				_events = [];
			}

			function keyupEv(e) {
				var regStrs = [
					[‘^0(\\d+)$‘, ‘$1‘], //禁止录入整数部分两位以上,但首位为0
				];

				if (!isInt) {
					regStrs.push([‘[^\\d\\.]+$‘, ‘‘]); //禁止录入任何非数字和点
					regStrs.push([‘\\.(\\d?)\\.+‘, ‘.$1‘]); //禁止录入两个以上的点
					regStrs.push([‘^(\\d+\\.\\d{2}).+‘, ‘$1‘]); //禁止录入小数点后两位以上
				} else {
					regStrs.push([‘[^\\d]+$‘, ‘‘]); //禁止录入任何非数字
				}
				var value = "";
				for (i = 0; i < regStrs.length; i++) {
					var reg = new RegExp(regStrs[i][0]);
					this.val(this.val().replace(reg, regStrs[i][1]));
				}
				value = this.val();
				if (value[len] != ".") {
					value = value.substring(0, len);
					var reg = new RegExp("^[0-9]*$");;
					if (reg.test(value)) {
						this.val(value);
					}
				}

			}

			/**
			 * 录入完成后,输入模式失去焦点后对录入进行判断并强制更改,并对小数点进行0补全
			 * arg1 inputObject
			 * 这个函数写得很傻,是我很早以前写的了,没有进行优化,但功能十分齐全,你尝试着使用
			 * 其实有一种可以更快速的JavaScript内置函数可以提取杂乱数据中的数字:
			 * parseFloat(‘10‘);
			 **/
			function overFormat(e) {
				var th = this;
				var v = th.val();
				var max = th.attr("max");
				v = (v - 0) > (max - 0) ? max : v;
				if (isInt) {
					th.val(v);
					return;
				}
				if (v === ‘‘) {
					v = ‘0.00‘;
				} else if (v === ‘0‘) {
					v = ‘0.00‘;
				} else if (v === ‘0.‘) {
					v = ‘0.00‘;
				} else if (/^0+\d+\.?\d*.*$/.test(v)) {
					v = v.replace(/^0+(\d+\.?\d*).*$/, ‘$1‘);
					v = inp.getRightPriceFormat(v).val;
				} else if (/^0\.\d$/.test(v)) {
					v = v + ‘0‘;
				} else if (!/^\d+\.\d{2}$/.test(v)) {
					if (/^\d+\.\d{2}.+/.test(v)) {
						v = v.replace(/^(\d+\.\d{2}).*$/, ‘$1‘);
					} else if (/^\d+$/.test(v)) {
						v = v + ‘.00‘;
					} else if (/^\d+\.$/.test(v)) {
						v = v + ‘00‘;
					} else if (/^\d+\.\d$/.test(v)) {
						v = v + ‘0‘;
					} else if (/^[^\d]+\d+\.?\d*$/.test(v)) {
						v = v.replace(/^[^\d]+(\d+\.?\d*)$/, ‘$1‘);
					} else if (/\d+/.test(v)) {
						v = v.replace(/^[^\d]*(\d+\.?\d*).*$/, ‘$1‘);
						ty = false;
					} else if (/^0+\d+\.?\d*$/.test(v)) {
						v = v.replace(/^0+(\d+\.?\d*)$/, ‘$1‘);
						ty = false;
					} else {
						v = ‘0.00‘;
					}
				}
				th.val(v);
			}
		});

	}

})(jQuery);

使用说明:

max:输入框所支持的最大值

int:配置输入框是否只输入整数

时间: 2024-10-16 17:05:43

数字输入框(价格输入框)的相关文章

【总结】java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格

转: [总结]java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格 @Test public void test33() { String phoneString = "哈哈,13888889999"; // 提取数字 // 1 Pattern pattern = Pattern.compile("[^0-9]"); Matcher matcher = pattern.matcher(phoneString); String all = matc

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

Swift自定义控件--输入框

在开发安卓项目的时候经常对于常用的功能进行封装成控件来使用,一个是减少代码量,另一个看起来简洁,而对于苹果开发也喜欢封装成控件,然后再storyboard里面拖拽,对于IOS开发自己属于菜鸟级别所以代码质量不是很高,如果那里有问题,请指出,这里记录一个是备忘另一个希望多多交流. 这篇是自定义输入框,输入框在项目中经常用到,最常见的比如左边是label右边是textfield,效果图如下: 代码如下 // // TextFieldValidator.swift // CustomWidget //

JPG各种输入框样式

输入框景背景透明:<input style="background:transparent;border:1px solid #ffffff"> 鼠标划过输入框,输入框背景色变色:<INPUT value="Type here" NAME="user_pass" TYPE="text" SIZE="29" onmouseover="this.style.borderColor='

input输入框的各种样式

输入框景背景透明:<input style="background:transparent;border:1px solid #ffffff"> 鼠标划过输入框,输入框背景色变色:<INPUT value="Type here" NAME="user_pass" TYPE="text" SIZE="29" onmouseover="this.style.borderColor='

MUI框架之输入框Input

input输入框的官方api文档:http://dev.dcloud.net.cn/mui/ui/#input 一.输入框类型 输入框的类型是根据type来决定是普通输入框还是密码框,搜索框等类型 <label>帐号</label> <input id="mess" class="mui-input-clear" type="text" placeholder="请输入帐号"> <la

给EasyUi的Form添加自动填充部分输入框的方法

根据项目需要,基于获取的数据对Form的部分输入框进行填充,而默认的EasyUI的Form 没有该方法,只能一个输入框一个输入框的直接赋值,为此增加了Form对象的setValues,实现根据给定的Id来填充的功能.代码如下: $.extend($.fn.form.methods, { setValues: function (myself, data) { var form = $(myself); var opts = $.data(form[0], "form").options

iOS开发一行代码系列:一行搞定输入框

最近总结了下开发过程中常用的功能,发现有时候我在做重复性的劳动.于是决定把常用的功能抽出来,方便下次使用. 我的想法是:用最少的代码来解决问题.于是写了一些常用的工具类,名字就叫一行代码系列吧...好像挺挫的.. 大致内容有: 1.一行搞定输入框 2.一行搞定网络请求 3.一行搞定上下拉刷新(会自动判断是上拉还是下拉还是两者并存) 4.一行搞定数据库(最近还在写,功能已经基本实现) 5.一行搞定图片保存 6.一行搞定定位 7.一行搞定网络状况变化 8.一行搞定X(功能小集合) 一行搞定输入框 输

【转】swift实现ios类似微信输入框跟随键盘弹出的效果

swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么这是怎么实现的呢,也许你会说直接在键盘弹出的时候把输入框也向上移动不就行了?但是我使用这种方法的时候,发现效果十分不理想,会有明显的滞后现象,原因有以下几点: 键盘弹出动画并不是匀速,键盘和输入框的时间曲线不完全一致,运动不同步 各种键盘的高度不一样(比如