Javascript-удаление пробелов при вставке
У меня есть текстовое поле ввода с maxlength 10. Поле предназначено для австралийских телефонных номеров (10 цифр). Номера телефонов, как правило, разделены на следующий синтаксис
12 12345678
Если кто-то копирует и вставляет в мое поле ввода, он, очевидно, оставляет последнюю цифру и держит пространство.
есть ли способ удалить пробелы прямо перед вставкой в поле ввода? Или есть другая работа?
спасибо продвижение.
3 ответов
Это должно работать для вас:
HTML-код
<input type="text" id="phone" maxlength="10" />
JavaScript
var phone = document.getElementById('phone'),
cleanPhoneNumber;
cleanPhoneNumber= function(e)
{
e.preventDefault();
var pastedText = '';
if (e.clipboardData && e.clipboardData.getData)
{// Standards Compliant FIRST!
pastedText = e.clipboardData.getData('text/plain');
}
else if (window.clipboardData && window.clipboardData.getData)
{// IE
pastedText = window.clipboardData.getData('Text');
}
this.value = pastedText.replace(/\D/g, '');
};
phone.onpaste = cleanPhoneNumber;
Скрипка:http://jsfiddle.net/y6TYp/6/
обновление nnnnnnn был большой пункт относительно австралийских телефонных номеров, обновление заменить regex.
эта функция поможет вам сделать это:
function removeSpaces(string) {
return string.split(' ').join('');
}
альтернативно, используя jQuery, вы можете использовать метод, описанный здесь: удалить пробелы в текстовом поле при копировании, вставленном с помощью jquery
подходя к описанной задаче, вы хотите убедиться, что ваш код работает в разных браузерах с javascript или без него, поэтому я бы сделал следующее:
установите maxlength в 11-maxlength-атрибут HTML, и вам нужно убедиться, что с javascript или без него данные, введенные пользователем, не потеряны. Если пользователь вводит 11 цифр и нет javascript - вам нужно будет захватить данные и очистить их со стороны сервера. Ну, сервер боковая проверка является обязательной.
-
Если javascript есть, я бы использовал функцию jquery для установки maxlength и обеспечения удаления пробелов, поэтому, скажем, у вас есть поле с ID = 'title': На готовом документе вы пишете следующий код:
$('input#title').attr ('maxLength','10').нажатие клавиши (limitMe);
function limitMe(e) { if (e.keyCode == 32) { return true; } return this.value.length < $(this).attr("maxLength"); }
очевидно, что если у вас есть многочисленные поля, вы просто украшаете все поля ввода одним и тем же классом атрибут, а затем применить его ко всем полям, как так:
$('input.limited').attr('maxLength','10').keypress(limitMe);