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 или без него, поэтому я бы сделал следующее:

  1. установите maxlength в 11-maxlength-атрибут HTML, и вам нужно убедиться, что с javascript или без него данные, введенные пользователем, не потеряны. Если пользователь вводит 11 цифр и нет javascript - вам нужно будет захватить данные и очистить их со стороны сервера. Ну, сервер боковая проверка является обязательной.

  2. Если 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);