Should this not block out all non-valid characters rather than simply remove alphabetical characters?  So something like
`return String.fromCharCode(event.keyCode).replace(/^0-9\+\-\s\(\)\[\]_/g, "").length !== 0;`