计算指定输入框中字符串的长度
@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, ' ')) ">