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服务运行结果的输出路径 & ...
随机推荐
- this关键字简单应用
class PersonDemo3 { public static void main(String[] args) { Person p=new Person("张三",22); ...
- stm8的IIC库的使用
一.前言 stm8是一款低功耗的MCU芯片,它具备stm32库函数和资源丰富的优势.也同时具有价格便宜,低功耗的特点.在一些项目中,能起到很好的作用.下面我介绍一下stm8的IIC硬件库函数驱动代码及 ...
- Mac OS Terminal 几个快捷键
在Mac系统中几个键位组合可以使Terminal的操作更加灵活方便. 1.将光标移动到行首:ctrl + a 2.将光标移动到行尾:ctrl + e 3.清除屏幕: ctrl + ...
- Bootstrap 3 Datepicker 使用过程
最近在创建记录的时候,需要用到日历的功能.本身是使用的bootstrap布局的,所以就找到Datepicker,看了一下用起来还是挺方便的.下面就是使用过程. 依赖的资源 jQuery Moment. ...
- 财务报表 > 现金流表的直接法,间接法,Cash Flow from Operating Activites
经营活动现金流量 Cash Flow from Operating Activites 是指企业投资活动和筹资活动以外的所有的交易和事项产生的现金流量.它是企业现金的主要来源. 1. 直接法经营活动现 ...
- django之DB操作
先来区分一下什么是一对一.多对多 一对一:子表从母表中选出一条数据一一对应,母表中选出来一条就少一条,子表不可以再选择母表中已被选择的那条数据: 一对多:子表从母表中选出一条数据一一对应,但母表的这条 ...
- 扩展progress_timer的计时精度
progress对外输出精度只有小数点后两位(这点可以运行上节程序进行验证),即精确到0.01秒. 我们使用模板技术仿造一个progress_timer编写一个新类:new_progress_time ...
- Mifare系列4-组成(转)
文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38081241 MIFARE集成电路芯片内含EEPROM.RF接口和数字控制单元. ...
- nignx 负载均衡的几种算法介绍
负载均衡,集群必须要掌握,下面介绍的负载均衡的几种算法. 1 .轮询,即所有的请求被一次分发的服务器上,每台服务器处理请求都相同,适合于计算机硬件相同. 2.加权轮询,高的服务器分发更多的请求 ...
- C#知识点总结系列:5、CLR的组成和运转
clr基本 CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”.(例如:c#,c++/cli,vb,f#,ironpython,ironruby,il... ...