Включить Backspace с событием oninput jQuery в тексте формы ввода?

У меня есть форма ввода, к которой применено событие jQuery, которое создает квадратные скобки вокруг ввода пользователей. Проблема в том, что это событие не позволяет использовать клавишу Backspace для удаления текста. Я ищу способ проверить, нажата ли клавиша Backspace, и предотвратить запуск кода.

JQuery-скрипт

function test(obj) {
var oldVal = obj.val().replace(/\[/g,\'\');
oldVal = oldVal.replace(/\]/g,\'\');
var val = \'[\' + oldVal + \']\';
obj.val(val);

Форма ввода

oninput="test($(this));"

person Jay    schedule 14.08.2014    source источник
comment
test($(this))? Я думаю, что $(this) там не определено. Не могли бы вы просто сделать if (e.which == 8) return false (8 - это backspace)   -  person putvande    schedule 14.08.2014
comment
если вы добавите jsfiddle к своему вопросу, вам будет проще отвечать на подобные вопросы. jsfiddle.net   -  person Zach Spencer    schedule 14.08.2014
comment
Вот jsfiddle, который нужно немного изменить: jsbin.com/gaxewatu/22/ редактировать?html,js,вывод   -  person Jay    schedule 14.08.2014


Ответы (1)


 function test(obj,e) {  
      if(!(e.which == 8)){
           var oldVal = obj.val().replace(/\[/g,'');
           oldVal = oldVal.replace(/\]/g,'');
           var val = '[' + oldVal + ']';
           obj.val(val);
      }
 }

и передать событие как параметр..

 <input class="text-box" onkeyup="test($(this),event)">
person Alok    schedule 14.08.2014
comment
Какая функция @Jay?? - person Alok; 15.08.2014
comment
obj тот, который добавляет скобки. - person Jay; 15.08.2014