2013-04-25 2 views
7

У меня есть текстовое поле для Возраста:IE10 Validation ошибка с MAXLENGTH и заполнителем на текстовом поле

< входного типа = идентификатор = имя «текста» «txtAge» = «txtAge» класс = «текст» заполнитель = "Возраст (опционально) «maxlength =» 2 »>

После нажатия кнопки« Отправить »этот вход немедленно оканчивается красным цветом. Нет обратной передачи. Я предполагаю, что IE10 считает, что клиент действительно набрал «Возраст (необязательно)», который больше, чем максимальная длина 2.

Есть ли способ обойти это без необходимости делать что-либо в настройках своего браузера и без удаление атрибута maxlength?

+2

Не вызывает сомнения, что это проблема. Предоставляет ли IE10 сообщение об ошибке в поле? Выполняете ли вы какую-либо специальную проверку при отправке? Кстати, может быть лучше, если вы используете type = "number" для возраста. –

+0

IE 10 добавляет красную границу 3px. Я не знаю откуда. Я искал все решение для 3px solid red без результата. Кнопка отправки не имеет никакого javascript, привязанного к ней вообще. Предполагалось, что в этом конкретном случае он будет отправлен обратно. При использовании типа = номер может исправить эту конкретную проблему, у меня есть другие поля, такие как средний начальный, где placeholder = «MI» и maxlength = «1», и он показывает ту же красную границу. – sapataso

+0

Можете ли вы опубликовать демо-версию проблемы, так как я не вижу проблемы с использованием только того кода, который вы указали выше? –

ответ

10

Вы можете использовать атрибуты novalidate и formnovalidate. См. this link для получения дополнительной информации.

Приложения Internet Explorer 10 и Windows Store с использованием JavaScript добавляют новую поддержку форматов HTML5, включая новые состояния атрибута type (для элемента ввода), новые атрибуты для элемента ввода и элемент прогресса. Эта поддержка позволяет разработчикам быстро и легко предоставлять пользователю запрос, подтверждение ввода и обратную связь с минимальным количеством скриптов.

Источник: http://msdn.microsoft.com/en-us/library/ie/hh673544(v=vs.85).aspx

1

я столкнулся с той же проблемой.

В этом случае вы должны изменить максимальную длину до 10, чтобы она не выдавала максимальную длину и задавала максимальную длину, которую вы хотите для своего текстового поля, используя javascript, как показано ниже.

function setMaxLength(obj, len) { 
return (obj.value.length < len); 
} 

и вызвать эту функцию, как следующий

<input type="text" id="txtAge" name="txtAge" class="text" placeholder="Age (optional)" maxlength="10" onkeypress="return setMaxLength(this,2);"> 

Это позволит решить проблему.

1

У меня была такая же проблема, в моем случае это было поле GUID, которое было скрыто, поскольку мне не нужно было отображать его на экране. Поэтому у меня был дисплей: none и maxlength = 0. Тем не менее, IE выполнял валидацию, последействие было неудачно, и я понятия не имел, почему. Мне потребовалось полдня, чтобы понять, решение было установить maxlength = 36.

+1

Тот же вопрос здесь; спасибо за сообщение. Я просто потерял час из-за скрытого текстового поля, которое было заполнено с помощью клиентского скрипта, но имело максимальную длину, которая была слишком мала. Какой sux является то, что IE 10 (и 11) заблокирует отправку формы и покажет сообщение об ошибке «ваш вход превысил X символов» (или что-то еще), но сообщение об ошибке скрыто, потому что элемент был скрыт, поэтому пользователь не имеет способа зная, что происходит. Похоже на ошибку в IE: если элемент скрыт, либо вообще не проверяйте maxlength, либо покажите в качестве предупреждения/диалога.Действительно, они должны просто удалить эту функцию ... это серверная задача – nothingisnecessary

Смежные вопросы