Javascript 使用jQuery按下delete键时如何从字符串中跳过字符

Javascript 使用jQuery按下delete键时如何从字符串中跳过字符,javascript,jquery,Javascript,Jquery,Hi如何在使用jQuery从字符串中删除特定字符时禁用delete按键或backspace按键。例如,当光标位于hypen时,从字符串1234-555,如果按delete键,则不应删除hypen。相反,光标应该保持在相同的位置。基本上在连字符处禁用delete键。同样,当光标位于hypen之后时,如果按backspace键,则不应删除hypen。相反,光标应该保持在相同的位置 当然,使用向下键事件 编辑:要获取光标在文本框中的当前位置,您需要使用以下功能(由Noless提供): 现在,回到我最初

Hi如何在使用jQuery从字符串中删除特定字符时禁用delete按键或backspace按键。例如,当光标位于hypen时,从字符串1234-555,如果按delete键,则不应删除hypen。相反,光标应该保持在相同的位置。基本上在连字符处禁用delete键。同样,当光标位于hypen之后时,如果按backspace键,则不应删除hypen。相反,光标应该保持在相同的位置

当然,使用
向下键
事件

编辑:要获取光标在文本框中的当前位置,您需要使用以下功能(由Noless提供):

现在,回到我最初的答案:

var nobackspace = ['-'];
$(element).keydown(function(e) {
   if(e.keyCode == 8) {//backspace key was pressed
    var pos = getCaret(this);

    if(pos > 0) pos--;  //just a precaution so we don't get a negative number

    if(!jQuery.inArray($(this).val().charAt(pos), nobackspace)) return false;
   }
});

您可以尝试查看这些插件:该功能可能来自CMS,但它只处理折叠的选择,不会正确处理IE中的空行。我已经发布了一个高级功能的副本。
var nobackspace = ['-'];
$(element).keydown(function(e) {
   if(e.keyCode == 8) {//backspace key was pressed
    var pos = getCaret(this);

    if(pos > 0) pos--;  //just a precaution so we don't get a negative number

    if(!jQuery.inArray($(this).val().charAt(pos), nobackspace)) return false;
   }
});