Input钱币规范化
要求限制input的输入内容,只有输入0-9的数字,backspace,delete,小数点,还有左右移动有效,reFormat函数用于input得到光标时将带逗号的金钱格式转化为没有逗号的字符串,amountInput函数用于控制input能输入的数值大小,其中num指的是小数点后的数字位数,max为小数点之前的数字位数。formatMoney函数用于将字符串转化为对应的金钱格式。
html
<input type="text" style="width:200px;ime-mode:disabled;" onkeydown="return test(event,this,3,3);" onblur="formatMoney(this,3);" onfocus="reFormat(this)" >
js
<script>
function reFormat(obj){
var CaretPos = 0;
var afterFormat;
if (document.selection) { // IE Support
obj.focus();
var Sel = document.selection.createRange();
Sel.moveStart('character', -obj.value.length);
CaretPos = Sel.text.length;
}else if(obj.selectionStart || obj.selectionStart == '0'){// Firefox support
CaretPos = obj.selectionStart;
}
var strj=obj.value.substring(0,CaretPos);
var arrj=strj.match(",");
if(arrj!=null){
afterFormat=CaretPos-arrj.length;
}else{
afterFormat=CaretPos;
}
var String=obj.value;
obj.value=String.replace(/,/g, ""); //删除逗号
if(obj.setSelectionRange){ //光标定位
obj.focus();
obj.setSelectionRange(afterFormat,afterFormat);
}
else if (obj.createTextRange) {
var range = obj.createTextRange();
range.collapse(true);
range.moveEnd('character', afterFormat);
range.moveStart('character', afterFormat);
range.select();
}
}
function amountInput(event,obj,num,max){
var n=obj.value;
var pointPastion=n.lastIndexOf(".");
var CaretPos = 0;
var selectLength;
var selectValue;
var numAfterPoint=n.length-pointPastion;
if (document.selection) { // IE Support
obj.focus();
var Sel = document.selection.createRange();
Sel.moveStart('character', -obj.value.length);
CaretPos = Sel.text.length;
selectLength=document.selection.createRange().text.length;
selectValue=document.selection.createRange().text;
}else if(obj.selectionStart || obj.selectionStart == '0'){// Firefox support
CaretPos = obj.selectionStart;
if(obj.selectionStart != undefined && obj.selectionEnd != undefined) {
selectLength=obj.value.substring(obj.selectionStart, obj.selectionEnd).length;
selectValue=obj.value.substring(obj.selectionStart, obj.selectionEnd);
} else {
selectLength=0;
selectValue="";
}
}
if(selectLength!=0){//覆盖
if(selectValue.lastIndexOf(".")>=0){//有点
if((n.length-selectLength)<max){//剩余长度小于MAX
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else if((n.length-selectLength)>max){//剩余长度大于MAX
if (event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else{//剩余度等于MAX
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//无点
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//插入
if(pointPastion>=0){//有点
if(CaretPos>pointPastion){//右边
if(numAfterPoint>num){//AfterNum>num
if(CaretPos==(pointPastion+1)){//点右边
if((n.split(".")[0].length+n.split(".")[1].length)<=max){//B+A<=Max
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else{//B+A>Max
if (event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//非点右边
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//AfterNum<num
if(CaretPos==(pointPastion+1)){//点右边
if((n.split(".")[0].length+n.split(".")[1].length)<=max){//B+A<=Max
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else{//B+A>Max
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//非点右边
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}
}else{//左边
if(n.split(".")[0].length>=max){//left>=max
if(CaretPos==pointPastion){//点左边
if((n.split(".")[0].length+n.split(".")[1].length)<=max){//sum<=max
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else{//sum>max
if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//非点左边
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//left<max
if(CaretPos==pointPastion){//点左边
if((n.split(".")[0].length+n.split(".")[1].length)<=max){//sum<=max
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else{//sum>max
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}else{//非点左边
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}
}
}else{//无点
var bPos=n.length-CaretPos;
if(bPos<(num+1)){
if (event.keyCode == 110 || event.keyCode == 190){
return true;
}
}
if(n.length>=max){//超长
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}else{//未超长
if(event.keyCode >= 48 && event.keyCode <= 57){
return true;
}
if (event.keyCode >= 96 && event.keyCode <= 105) {
return true;
}
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39) {
return true;
}
}
}
}
return false;
}
function formatMoney(obj, n){
s=obj.value;
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse();
var r = s.split(".")[1];
var t = "";
for(var i = 0; i < l.length; i ++ ) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
if(obj.value.length==0){
obj.value="0."
for(var i=0;i<n;i++){
obj.value+="0";
}
}else{
obj.value=t.split("").reverse().join("") + "." + r;
} }
</script>
Input钱币规范化的更多相关文章
- 爬虫技术 -- 基础学习(一)HTML规范化(附特殊字符编码表)
最近在做网页信息提取这方面的,由于没接触过这系列的知识点,所以逛博客,看文档~~看着finallyly大神的博文和文档,边看边学习边总结~~ 对网站页面进行信息提取,需要进行页面解析,解析的方法有以下 ...
- hdu 1284 钱币兑换问题 完全背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1284 递推公式:dp[i] = sum(dp[i], dp[i-C]) /* 钱币兑换问题 Time ...
- 钱币兑换问题(hd1284)
钱币兑换问题 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Output 对应每个输 ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 【完全背包】HDU 1284 钱币兑换问题
Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...
- 规范化Normalization
一.批规范化 Batch Normalization 转自: http://blog.csdn.net/hjimce/article/details/50866313 https://zhuan ...
- java练习:质数,匿名内部类创建接口,抽象类派生子类,画圆,字节截取字符串,数字变钱币,五子棋,梭哈
java学习-质数的孤独 正在看质数的孤独,,,于是写了一个练习代码,输出1-100之间的质数 代码比较烂.待完善吧. 这里用到了continue和break,continue指结束当前轮次循环,跳入 ...
- Tag (input) should be an empty-element tag.
因为:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
感谢一路走来默默陪伴和支持的你~~~ -------------------欢迎来访,拒绝转载------------------- 在之前的利用Python分析GP服务运行结果的输出路径 & ...
随机推荐
- Foundation框架-NSString和NSMutableString
可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式 2.3 从文件中 ...
- 关于webrtc视频会议的解决方案
以我的经验来看视频会议分两种模式:网状模型,星型 1.网状模型 所谓的网状模型就是参加会议的人中每两个人建立一个点对点的连接. 比如:一个会议室有三个人A,B,C 基于网络模型就需要这样: 1.A和B ...
- .net 验证码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- javascript高级程序设计---第二、三章
在HTML中引用javaScript javascript的几个属性 type async(异步加载 只适用于外部JS且IE8以上 HTML5规范 先于load执行) src defer(延迟加载 ...
- mongoose 的 model,query:增删改查
简介 mongoose是node.js的一个操作mongodb的模块,比起之前mongodb模块,只需要在开始时连接,不需要手动关闭,十分方便. 连接mongodb 首先你需要安装mongodb.有了 ...
- libevent源码分析:hello-world例子
hello-world是libevent自带的一个例子,这个例子的作用是启动后监听一个端口,对于所有通过这个端口连接上服务器的程序发送一段字符:hello-world,然后关闭连接. /* * gcc ...
- metaclass 常用方式
一个类作为metaclass的时候,我们需要重写它的__new__方法,这个方法的参数包括要创建class object的 metaclass,类名,父类集合,类成员 class MyMetaclas ...
- 【RabbitMQ】RabbitMQ的一些基础概念
工作中使用的是RabbitMQ,需要对其进行熟悉.使用之前,弄清楚它是什么东西,解决什么问题. 场景 一些不必实时执行的任务 开发中,有一些任务并无须实时执行,比如: 会员更新个人信息,更新会员信息之 ...
- ImageLoader图片加载
http://blog.csdn.net/liu1164316159/article/details/38728259 转载请注明http://write.blog.csdn.net/po ...
- ubuntu 14.04 vsftpd安装问题
sudo apt-get install vsftpd; 打开允许访问用户名 local_enable=YES write_enable=YES chroot_list_file=/etc/vsftp ...