我写了个页面上面有一个输入框,用户输入数字点按扭之后可以实现翻页但是如果用户在输入法打开并且当前输入状态为全角的时候是不能执行操作的因为JavaScript里不认为全角数字是数字但是用户输入的就是一个数字,不管是全角还是半角都应该执行翻页操作甚至用户根本就不懂得全角与半角的分别所以我想问问各位高手有没有办法解决全角向半角的转换谢谢

解决方案 »

  1.   

    用onchange事件,把全角替换成半角.
      

  2.   


    <input type="text"  onfocus="this.style.imeMode='disabled'" />
      

  3.   


    <input type="text" onchange="this.value = this.value.replace(/[0123456789]/g, function(v){return v.charCodeAt(0)-65296;});"  />
      

  4.   

    用JS把全角转换成半角(只允许输入数字)
    <input   
        onkeypress="var   k=event.keyCode;   return   k>=48&&k<=57"   
        onpaste="return   !clipboardData.getData('text').match(/\D/)"   
        ondragenter="return   false"   style="ime-mode:Disabled"   
      >
      

  5.   


    str = DBC2SBC(str, true);function DBC2SBC(str, flag){
    var result = '';
    str = str.replace(/。/g,".");
    for(var i=0;i<str.length;i++){
    code = str.charCodeAt(i);
    if(flag){
    if(code >= 65281 && code <= 65373) result += String.fromCharCode(str.charCodeAt(i) - 65248);
    else if(code == 12288) result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
    else result += str.charAt(i);
    }
    else{
    if(code >= 33 && code <= 126) result += String.fromCharCode(str.charCodeAt(i) + 65248);
    else if(code == 32) result += String.fromCharCode(str.charCodeAt(i) - 32 + 12288);
    else result += str.charAt(i);
    }
    }
    return result;
    }
      

  6.   

    参见http://www.jslab.org.cn的全角转半角部分(JK)
    <script language=javascript>
    //全角空格为12288,半角空格为32
    //其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
    //document.write((65281).toString(16)+"----"+(65374).toString(16)+"----"+(12288).toString(16));
    String.prototype.dbc2sbc = function ()
    {
    return this.replace(/[\uff01-\uff5e]/g,function(a){return String.fromCharCode(a.charCodeAt(0)-65248);}).replace(/\u3000/g," ");
    }
    document.write("ABC 123,我们都是好朋友".dbc2sbc());
    </script>
      

  7.   


    恩!谢谢大家了我刚才查资料的时候发现了一种解决方法现在看和hookee的方法类似结帖吧