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服务运行结果的输出路径 & ...
随机推荐
- HTML纯javaScript代码写图片轮播
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ML-线性回归
记样本数目为$m$,样本点$i$用$(x^{(i)}, y^{(i)})$表示,其中 $x^{(i)}=\begin{pmatrix}x_1^{(i)}\\ x_2^{(i)}\\ ...\\x_n^ ...
- 完整安装cocoaPods
cocoaPods是一款xcode项目管理第三方库的工具 *ruby源码镜像下载:https://ruby.taobao.org/mirrors/ruby/*升级gem的版本: $sudo gem u ...
- 课堂 一些代码的叫法 JavaScript js
():圆括号 {} :花括号 <>:尖括号 [] :方括号
- video 手机全屏自动播放
<video src="video.mp4" id="video" x-webkit-airplay="true" webkit-pl ...
- 【前端】【转】JS跨域问题总结
详情见原博客:详解js跨域问题 概念:只要协议.域名.端口有任何一个不同,都被当作是不同的域. 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源 ...
- ubuntu各种应用安装
微信安装,编译包下载,双击electronic-wechat就能用了,记得lock在launcher上 https://github.com/geeeeeeeeek/electronic-wechat ...
- 复旦大学2014--2015学年第二学期(14级)高等代数II期末考试第八大题解答
八.(本题10分) 设 $A,B$ 为 $n$ 阶半正定实对称阵, 求证: $AB$ 可对角化. 分析 证明分成两个步骤: 第一步, 将 $A,B$ 中的某一个简化为合同标准形来考虑问题, 这是矩 ...
- FPGA重要设计思想
FPGA重要设计思想 1.速度和面积互换原则.以面积换速度可以实现很高的数据吞吐率,其实串/并转换.就是一种以面积换速度的思想 2.乒乓操作. 3.串/并转换的思想. 高速数据处理的重要技巧之一. ...
- 如何将推送证书p12导出为pem
1. 在Mac上启动Keychain助手,然后在login keychain中选择 Certificates分类.你将看到一个可展开的“Apple Development Push Services” ...