Вам просто нужно убежать от своих символов
var regex = new RegExp("[^\\^\\%]");
Fiddle ==> http://jsfiddle.net/6j8sa9qz/10/
Просто удалите первый ^
, если вы хотите разрешить только символы
Кроме того, поскольку регулярное выражение не является динамическим, вы можете объявить его вне функции нажатия клавиши.В противном случае он объявляется снова и снова каждый раз, когда пользователь нажимает клавишу!И на самом деле вам не нужно возвращать true
, чтобы вы могли упростить
$(function(){
var regex = new RegExp("[^\\^\\%]");
$('#test').keypress(function (e) {
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (!regex.test(str)) {
e.preventDefault();
return false;
}
});
});