zoukankan      html  css  js  c++  java
  • js 金额文本框实现代码

    案例1:回车实现Tab跳转。 
    响应文本框的onKeyDown事件,window.event.keyCode获得用户点击的keyCode。 
    (*)keyCode和ASCII不是完全一致,主键盘的1和小键盘的1的ASCII一样,但是keyCode不一样。回车的keyCode为 13,Tab的keyCode为9。 
    <body onkeydown="if(window.event.keyCode==13){window.event.keyCode=9;}"> 
    只有少数的键才能被替换,大部分是不行的,有权限问题。 
    键盘码与ASCII码不一样。 
    keyCode 
    8:退格键 
    46:delete 
    37-40: 方向键 
    48-57:小键盘区的数字 
    96-105:主键盘区的数字 
    110、190:小键盘区和主键盘区的小数点 
    189、109:小键盘区和主键盘区的负号 
    13:回车 
    9: Tab 就是那个把焦点移到下一个文本框的东东。 
    案例2:金额文本框 
    财务相关系统中涉及到金额的文本框有如下要求: 
    进入金额文本文本框不使用中文输入法 
    不能输入非数字 
    焦点在文本框中时文本框左对齐;焦点离开文本框时文本框右对齐,显示千分位 
    禁用输入法:style=“ime-mode:disabled” //兼容FF、IE,不兼容Chrome 
    禁 止键入非法值,只有这些才能被键入(k == 9) || (k == 13) || (k==46)||(k==8)||(k==189)||(k==109)||(k==190)||(k==110)|| (k>=48 && k<=57)||(k>=96 && k<=105)||(k>=37 && k<=40)。 onkeydown="return numonKeyDown()" 不要写成onkeydown="numonKeyDown()" 区分事件响应函数和事件响应函数调用的函数。 
    禁止粘贴(伟大的 Tester),<input onpaste=“return false;” ,太暴力,应该只是禁止粘贴非法值。在onpaste中通过clipboardData.getData(‘Text')取到粘贴板中的值,然后遍历每个 字符,看是否是合法的值,如果全部是合法值才允许粘贴,只要有一个非法值就禁止粘贴。charAt、charCodeAt(查字符集.doc)
    焦点在的时候左对齐没有千分位,焦点不在时右对齐千分位。this.style.textAlign='right' 
    添加千分位的方法,见备注(*) 
    ========补充知识================== 
    (?=exp)匹配exp前面的位置 
    (?=exp) 也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了 ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。 
    =============================== 
    function f(){ 
    var txts=document.getElementsByTagName('input'); 
    for(var i=0;i<txts.length;i++){ 
    //回车转换为tab 
    txts[i].onkeydown=function(){ 
    if(window.event.keyCode==13){ 
    window.event.keyCode=9; 
    txts[i].onpaste=function(){ 
    var usrInput=clipboardData.getData('Text'); 
    var k; 
    for(var i=0;i<usrInput.length;i++){ 
    k=usrInput.charCodeAt(i); 
    //只能黏贴.或0-9的数字,参考ASCII字符集。 
    if((k==46) ||(k>=48 && k<=56)){ 
    }else{ 
    return false; 
    千分位(练习代码): 
    function commafy(n) 
    var re=/\d{1,3}(?=(\d{3})+$)/g; //必须是以\d{3}结尾,前面必须是1-3个数字,但替换的时候,不包含结尾的\d{3}个数字。 var n1=n.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,“$&,”)+s2;}); 
      return n1; 
    function addQianFenWei(txtBox) 
    txtBox.value=commafy(txtBox.value); 
    function removeQianFenWei(txtBox) 
    txtBox.value=txtBox.value.replace(/,/g,"");//如果是replace(',','')是只替换第一个 
    <script type="text/javascript"> 
    function commafy(n) 
    var re=/\d{1,3}(?=(\d{3})+$)/g; //匹配1到3个数字后面跟3个数字,但不含最后的3个数字。 
    var n1=n.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;}); 
    return n1; 
    function setQFW(){ 
    var objTxt=document.getElementById('txtqfw'); 
    var r=''; 
    for(var i=objTxt.value.length-1;i>=0;i--){ 
    if(i%3==0){ 
    r+=objTxt.value.charAt(i)+','; 
    }else{ 
    r+=objTxt.value.charAt(i); 
     objTxt.value=r; 
    //objTxt.value=commafy(objTxt.value); 
    </script> 
  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/top5/p/2351954.html
Copyright © 2011-2022 走看看