Выполнение такой работы требует довольно большого прогресса JavaScript.
Сначала вам нужно знать, находится ли курсор/каретка в положении 0. Для этого вам нужно получить диапазон выбора. Это зависит от используемого вами браузера.
https://developer.mozilla.org/en-US/docs/Web/API/Range
Фрагмент кода (непроверенные) для Firefox & SeaMonkey:
var range = document.createRange();
var pos = range.startOffset;
Тогда, если позиция равна нулю, вы знаете, что курсор находится в начале, и вы можете проверить нажата ли пользователь нулю:
if(pos == 0 && code == 48)
{
e.preventDefault();
}
Однако вы также хотите подумать о случае, когда пользователь вводит 100 и помещает свой курсор или выделение в включают 1 или 10. Теперь он удаляет удаление, а оставшийся - один ноль (0). Как справиться с этим делом будет очень сильно зависеть от того, что вы действительно хотите предложить в своем интерфейсе. Я, кажется, очень раздражает системы, которые автоматически удаляли остальную часть текста, потому что он не соответствует действительному ответу, а не дает вам способ исправить его ... Я считаю, что это не очень хорошее решение.
Другое решение, которое я обычно делаю, заключается в том, чтобы позволить пользователю вводить что-либо в поле (ну, в вашем случае, допускать только цифры, но любое случайное число), а затем, когда пользователь нажимает кнопку «Отправить», , то вы проверите формат. Если формат неверен, выведите ошибку. В этом случае комментарий о регулярном выражении Mate применяется хорошо (хотя он ничего не объяснял в своем комментарии, kindda sad).
прочитать о регулярных выражений http://www.w3schools.com/jsref/jsref_obj_regexp.asp – Mate
Я хотел бы предложить вам не попытаться предотвратить ввод 0 в качестве первой цифры. Просто очистите все ведущие нули, прежде чем использовать поле. Помните, что вы можете получать значения в полях иначе, чем просто нажимать клавиши, такие как копирование/вставка и перетаскивание, поэтому попытка принудительно выполнить действия с клавиатуры не заставит вас все равно убирать значение в конце. Кроме того, попытка блокировать функцию вставки просто просто раздражает. Я ненавижу сайты, которые это делают. Нет никаких оснований для его блокировки, потому что это мой бизнес, как я предоставляю вход, а не ваш. – jfriend00
@Mate: спасибо. Хорошо, это способ сделать это 'this.value.length == 0 && e.which == 48'? Теперь проблема заключается в том, как использовать ее с помощью оператора 'return'? – Anne