怎么使用js校验输入框还可以输入多少个字,要区分汉字和非汉字

JavaScript010

怎么使用js校验输入框还可以输入多少个字,要区分汉字和非汉字,第1张

/**

计算指定输入框中字符串的长度

@param eleInput 指定的输入框或输入框的id, required

@param maxLength 期望的字符串最大长度, optional, 未指定时,默认取输入框的maxLength属性,未指定maxLength属性时,指定为100字符长度

@param nativeCharSize,一个汉字的长度,optional,因数据库编码不同,汉字所占用的长度也不同,比如UTF-8编码中,汉字占用3个字符的长度,而GBK编码中汉字则是2个字符的长度。未制定时,默认按2个字符长度计算

  @return 返回计算结果

*/

function computeLength(eleInput, maxLength, nativeCharSize) {

    var nativeCharRegexp = /[\u4E00-\u9FFF]/

    var string, char, length = 0

    var ele = (typeof eleInput == 'string') ? document.getElementById(eleInput) : eleInput

    if(maxLength == undefined) {

        maxLength = ele.maxLength || 100

      }

      

      if(nativeCharSize == undefined) {

          nativeCharSize = 2

      }

      

      string = (ele.value || '').split('')

      

      for(var i = 0, count = string.length i < count i ++) {

          char = string[i]

          if(nativeCharRegexp.test(char)) {

              length += nativeCharSize

          } else {

              length ++

          }

      }

      

      return length

}

function checkLength(target) {

var maxLength = 100 // 这是允许输入的最大数

        var targetLength = computeLength(target, maxLength, 2) // 这个是已输入的字符

var leftLength =maxLength - targetLength

        document.getElementById("size").innerHTML = leftLength // 这里的size就是需要变换数字地方的Id

    }

有关正则表达式

1.只能输入数字和英文的:

<input onkeyup= "value=value.replace(/[\W]/g, ' ') "onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, ' ')) ">

2.只能输入数字的:

<input onkeyup= "value=value.replace(/[^\d]/g, ' ') "onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, ' ')) ">

3.只能输入全角的:

<input onkeyup= "value=value.replace(/[^\uFF00-\uFFFF]/g, ' ') " onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\uFF00-\uFFFF]/g, ' ')) ">

4.只能输入汉字的:

<input onkeyup= "value=value.replace(/[^\u4E00-\u9FA5]/g, ' ') " onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\u4E00-\u9FA5]/g, ' ')) ">