入力ボックスの入力を検証しようとしているので、文字列に追加された文字を削除する方法を見つける必要がありました。私の考えでは、カーソル位置を使用してください。私の実装は機能するはずですが、入力がフォーカスされるたびに数文字の不具合が見られます。
私のフィドルはhttp://jsfiddle.net/fallenreaper/TSwyk/にあります
私は何を間違っていますか?検証したいときは、チェックして間違った文字を削除したくありません。
私のjavascriptコードは(jquery 1.7.2を使用していると思います):
function getCursorPosition(jqueryItem)
{
var input = jqueryItem.get(0);
if (!input) return; // No (input) element found
if ('selectionStart' in input) {
// Standard-compliant browsers
return input.selectionStart;
} else if (document.selection) {
// IE
input.focus();
var sel = document.selection.createRange();
var selLen = document.selection.createRange().text.length;
sel.moveStart('character', -input.value.length);
$("#sel").html(sel);
$("#selLen").html(selLen);
return sel.text.length - selLen;
}
}
$(function(){
alert("loaded");
$("input").on("input", function(){
var cPos = getCursorPosition($(this));
$("#cursorPos").html(cPos);
var FLAG = 'a';
$("#charatpos").html($(this).val().charAt(cPos));
$("#"+$(this).attr("id")+"count").html($(this).val().length);
if($(this).val().charAt(cPos) == FLAG){
var str = $(this).val();
var sArr = str.split("");
sArr.splice(cPos,1);
str = sArr.join("");
$(this).val(str);
}
});
});