JSFiddle - React, Tailwind, and code Playground
HTML
<input type="text" id="nobackspace" value="909-345-5564"/>
JavaScript
function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}
var nobackspace = ['-'];
$('#nobackspace').keydown(function(e) {
if(e.keyCode == 8) {//backspace key was pressed
var pos = getCaret(this);
if(pos > 0) pos--;
if(!jQuery.inArray($(this).val().charAt(pos), nobackspace)) e.preventDefault();
}
});