Firefox 4: Есть ли способ удалить красную границу в требуемой форме ввода?



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



<input type="text" name="example" value="This is an example" required />


Я думаю, что это беспокоит пользователя, так как он/она не совершал ошибок в начале.



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



Я посмотрел на :required и :invalid от новый псевдо селектор, но изменения для до и после проверка. (из Firefox 4 требуется форма ввода красная граница / контур)



есть ли способ отключить красную границу до того, как пользователь отправит форму, и показать ее, если есть некоторые отсутствующие поля ?

642   5  

5 ответов:

Это было немного сложно, но я настроил этот exmaple:http://jsfiddle.net/c5aTe/ который работает для меня. В основном трюк, кажется, обойти имея заполнитель текста, который является недействительным. В противном случае вы должны быть в состоянии сделать это:

input:required {
    box-shadow:none;
}
input:invalid {
    box-shadow:0 0 3px red;
}

или что-то подобное...

но поскольку FF4 решает проверить ваш текст заполнителя (не знаю, почему...) решение в скрипке (маленький хаки-использует !important) is требуемый.

надеюсь, что это поможет!

EDIT

Doh!! - Я чувствую себя так глупо. Я обновил свою скрипку:http://jsfiddle.net/c5aTe/2/ - Вы можете использовать :focus псевдо класс, чтобы сохранить элемент в стиле, как если бы действительным, пока пользователь вводит. Это будет по-прежнему выделяться красным цветом, если контент недействителен, когда элемент теряет фокус, но я думаю, что вы можете сделать только так много поведение...

HTH:)


редактировать после приема:

резюме примеров по запросу OP (обратите внимание, что первые два предназначены только для FF4 - не Хром)

  1. исправить для FF проверки Вашего места держатель текста:http://jsfiddle.net/c5aTe/
  2. исправление для проверки FF при вводе:http://jsfiddle.net/c5aTe/2
  3. JS решение переключение стилей / проверка: http://jsfiddle.net/c5aTe/4

начиная с Firefox 26, фактический CSS, используемый для идентификации недопустимых обязательных полей, выглядит следующим образом (исходит из форм.css):

:not(output):-moz-ui-invalid {
    box-shadow: 0 0 1.5px 1px red;
}

для репликации в других браузерах я использую:

input:invalid {
    box-shadow: 0 0 1.5px 1px red;
}

я играл вокруг с настройками пикселей, но я никогда бы не догадался 1.5 px, не глядя на источник moz.

, чтобы отключить его, вы можете использовать:

input:invalid {
    box-shadow: none;
}

вот очень простое решение, которое сработало для меня. Я в основном изменил уродливый красный на очень хороший синий, который является стандартным цветом для необязательных полей и веб-соглашения:

:required {
    border-color: rgba(82, 168, 236, 0.8);
}

Это хорошо работало для меня:

input:invalid {
     -moz-box-shadow: none;
}

пожалуйста, попробуйте это,

$("форма").attr ("novalidate", true);

для формы в глобальном .JS-файл или в разделе заголовка.

Comments

    Ничего не найдено.