Попробуйте заменить:
$("#"+id).select();
на:
$(this).focus();
В этом случае $("#"+id)
и $(this)
- это один и тот же элемент, и я предполагаю, что вы хотитеfocus
элемент при возникновении ошибки.
В сторону: я не верю, что значения id
или name
могут по закону начинаться с цифры, возможно, вы захотите поставить перед ними префикс с чем-то вроде option1
, option2
и т. Д. Это может сработать, но позже это также может вызвать проблемы, которые трудно отладить.Лучше всего допустить ошибку с осторожностью и рекомендациями.
Какие допустимые значения для атрибута id в HTML?
Редактировать : послене получая focus()
на работу, я попытался с setTimeout
и смог это сделать.Я не уверен, почему или если это действительно необходимо, но, похоже, это работает.
$(":input").focusout(function(){
var $this = $(this),
input = $this.val();
if (input > 10){
alert('You must enter a number between 0 and 10');
setTimeout(function(){
$this.focus();
}, 1);
}
});
Я хотел бы услышать, есть ли лучший способ сделать это или объяснение.Я подозреваю, что события размытия и фокуса не запускаются в порядке, который делает возможным предыдущий метод?
Демонстрация: http://jsfiddle.net/zRWV4/1/
Как упоминалось в комментариях, вы должны в конечном итоге убедиться, чтозначение является целым числом с parseInt
или подобным (вы, кажется, уже знаете об этом).