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服务运行结果的输出路径 & ...
随机推荐
- Windows下部署Appium教程(Android App自动化测试框架搭建)
摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...
- ThreadLocal的理解
ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.每个线程 ...
- repeater留言板[转]
做了一个网站,其中的在线留言板块是用Repeater来显示留言的,这样可以用少的代码还实现多的功能,但是不知道怎么分页,要是留言过多就会使页面变的很长,能过查看众多网友的经验,知道用PagedData ...
- 一位程序员如何修炼成CTO
几乎整个互联网行业都缺CTO,特别是一些草根背景的创业者,这个问题更加显著.从我自己的感受,身边各种朋友委托我找CTO的需求,嗯,算下来超过两位数了,光最近一个月就有3个,而且这三家都是刚拿了A轮的. ...
- MVC 外网 上传 下载 实现方式(一)
本人在实现第三方文件存储时,为实现Web网络的上传和下载 的实现费了一些时间,然后总结到的一些问题: 如有思路狭隘之处还望指正! 文件上传时: 实现方式 为: 客户端=>第三方=>服务器( ...
- http协议 幂等性的理解
HTTP GET.DELETE.PUT.POST四种主要方法的幂等性的理解 GET: GET请求是幂等的,多次的GET请求,不应该修改数据状态,只是查询. DELETE Delete请求也具有幂等性, ...
- js跨域_jsonP
$.ajax("url", type:"get", dataType:"jsonp", jsonp:"callback" ...
- iOS开发 QQ粘性动画效果
QQ(iOS)客户端的粘性动画效果 时间 2016-02-17 16:50:00 博客园精华区 原文 http://www.cnblogs.com/ziyi--caolu/p/5195615.ht ...
- Python_Day6_Pyhotn常用模块学习
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
- jquery TypeError: $(...).live is not a functio,动态添加class的点击事件处理
jq版本更新后无live函数的处理.TypeError: $(...).live is not a function jquery live函数语法 jquery版本更新, 发现一个问题: jq自带的 ...