このような動作をお探しですか?コードに続いて、ユーザーが矢印キーでカーソルの位置を変更せずに連続して入力している状況をサポートしてください。あなたはこのコードからアイデアをとり、必要に応じて修正することができます。
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 />
注:上記のコードは、入力された-の既存のテキスト内の任意の特定の場所でキーボードの矢印キーナビゲーションと文字の挿入のための世話をしていません。また、コピー貼り付け処理もサポートしていません。