Я пытаюсь создать поле, которое добавляет тире к числу, так что оно принимает форму номера телефона. Он добавляет тире, но если пользователь пытается вернуться обратно к началу, он не позволяет пользователю удалять тире. Ну, он удаляет его, но затем тире повторно заполняется.Backspace не удаляет тире
JavaScript, который позволяет только номера с исключениями, которые я в настоящее время с помощью:
function forceNumber(e) {
var keyCode = e.keyCode ? e.keyCode : e.which;
if((keyCode < 48 || keyCode > 58) && keyCode != 8 && keyCode != 188 && keyCode != 189) {
return false;
}
return true;
}
The JS, которая создает черточки:
function addDashes(n){
n = n.replace(/,/g, "");
var s=n.split('.')[1];
(s) ? s="."+s : s="";
n=n.split('.')[0];
if(n.length == 3 || n.length == 7 || n.length == 13){
s="-"
}
return n+s;
}
И PHP/HTML вызовов (Я не уверен, что если право выравнивания может быть причиной):
<p id="phone_number">
<label for="phone_number"><?php _e('Phone Number','mydomain') ?><br />
<input type="text" name="phone_number" id="phone_number" class="input" size="25" style="text-align:right" onkeypress="return forceNumber(event);" onkeyup="this.value=addDashes(this.value);"/>
</p>
С последнего/регулярное выражение блока, как вы типа вы получаете следующее: '123-123',' 1231-231', '123-1231-2',' 123-1231-23', '123-1231-234'. Регулярное выражение может быть изменено на '/ (\ d {3} (? = \ D)) ((\ d {3} (? = \ D)) | (\ d {0,3} $)) ((\ d {4} (? = \ d)) | (\ d {0,4} $))/', и последняя конкатенация' return' может быть изменена на '(($ 6)? $ 6: $ 7)' to сделайте эту работу должным образом. – smerny
Вы были правы в том, что проблема заключалась в том, что я делал (\ d {4} (? = \ D)) | (\ d {0,3} $)) вместо \ d {0,4}. Первоначально у меня было это, добавляя тире сразу после того, как они 4-го нажатия клавиши, вместо того, чтобы ждать пятого. Я не знаю, почему возвращение нужно изменить. Также я даже не поймал, что это касается телефонных номеров. Благодаря! –
Работал! Благодаря! У меня не было времени попробовать все эти методы сегодня днем, но после того, как первый метод все же привел к появлению тире, я дал вашему методу выстрел, и он отлично работал. Черточка не возвращается! Спасибо! – Helena