我有一个文本框。它可以接受数字和字母。我需要在运行时格式化文本框的值,这样每当按下一个数字/字母并且前一个是其他类别(字母/数字)时,它应该自动插入-
符号。
例如:AB108B8
应格式化为AB-108-B-8
请帮助我。
答案 0 :(得分:0)
你在寻找这样的行为吗?以下代码尝试支持用户连续键入而不使用箭头键更改光标位置的情况。您可以从这段代码中获取一个想法,并根据您的需要进行修改。
var isOppositeChar = false;
$('#field').keypress(function(event ) {
var $field = $(this);
// this is the value before the keypress
var beforeVal = $field.val();
var newVal = beforeVal;
if(beforeVal.length > 0 )
{
var chkResult = checkLastChar(beforeVal,event.key);
if(chkResult)
newVal +=event.key;
else
newVal += "-"+event.key;
event.preventDefault();
$field.val(newVal);
}
});
function checkLastChar(fieldVal,newChar){
var lastChar = fieldVal[fieldVal.length - 1];
var lastCharIsAlphabate = false;
var newCharIsAlphabate = false;
if(isNaN(lastChar))
lastCharIsAlphabate = true;
if(isNaN(newChar))
newCharIsAlphabate = true;
if(lastCharIsAlphabate == newCharIsAlphabate)
return true;
else
return false;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input id=field />
&#13;
注意:上面的代码没有注意键盘箭头键导航和在现有键入文本中的任何特定位置插入char。它也不支持复制粘贴过程。