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服务运行结果的输出路径 & ...
随机推荐
- 常用SQL总结
数据库知识总结一.数据库服务器设置1,查看数据库服务器编码 show variables like 'character%';2,设置数据库服务器编码 set character_set_ ...
- funsioncharts的图表操作heatmap
网址:http://www.fusioncharts.com/dev/chart-guide/heat-map-chart/introduction.html 以下只是假数据,目前还没有实现动态数据获 ...
- CSS的应用
CSS基础入门 目录 一. 列表.................................................................................. ...
- async和await
总结下博客园中看到的async和await public static class TaskAsyncHelper { /// <summary> /// 将一个方法function异步运 ...
- 2016年12月30日 星期五 --出埃及记 Exodus 21:25
2016年12月30日 星期五 --出埃及记 Exodus 21:25 burn for burn, wound for wound, bruise for bruise.以烙还烙,以伤还伤,以打还打 ...
- android appwigt
package com.example.test1; import android.os.Bundle; import android.app.Activity; import android.con ...
- Android BinderService 过程
步骤:建立服务器端服务,暴露接口 1.BinderService /** * @Title BinderService.java * @package cn.boxai.binderservice * ...
- jquery学习方法
http://www.runoob.com/jquery/jquery-tutorial.html jQuery 语法 通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行 ...
- C#获得类的方法和方法参数
Type t = typeof(CommonController); StringBuilder str = new StringBuilder(); MethodInfo[] methors = t ...
- 该用 QGraphicsView ? QtQuick-QML ?
目前QtQuick (2014/3/6) 已经发展了有一段时间了,很多人在用因此我也想看看是否适合我目前的项目. 我要做的是一个类似3DMax中的材质编辑器的东西,里面有成千上万的”表单“(不知道怎么 ...