Удалить кнопку IE10 «Очистить поле» на определенных входах?


743

Конечно, это полезная функция, но есть ли способ ее отключить?
Например, если форма представляет собой одно текстовое поле и рядом с ней уже есть кнопка «Очистить», то также избыточно иметь X. В этой ситуации было бы лучше удалить ее.

Можно ли это сделать, и если да, то как?


1
Это также полезно для поля со значением по умолчанию, где пустое значение не имеет, например, количество.
— Джо Флинн

4
так как это не вызывает ввод ввода, это очень сложно, когда вы связываете событие javascript.
— Киви

Ответы:


1268

Стиль ::-ms-clearпсевдоэлемента для коробки:

.someinput::-ms-clear {
    display: none;
}

14
Забавно, если вы используете режим совместимости IE для рендеринга вашей страницы с движками до IE10, этот псевдоэлемент не работает и в любом случае показывает кнопку.
— Юсеф Салимпур

@Yousef: Да, именно так оно и работает, и отчасти поэтому вы никогда не должны использовать режим совместимости на реальном веб-сайте. Это на самом деле не совместимо :)
— Ry-

@minitech - IE9 на компьютере с Windows 7
— ManJan

3
Этот элемент управления появляется ТОЛЬКО в IE10 + на Win8. Хитрость заключается в том, что он все еще появляется, когда документ переведен в режим совместимости.
— EricLaw

48
@EricLaw: Ну, НЕ ТОЛЬКО на Win8. Я сейчас использую Windows 7 и вижу эти кнопки X в своем IE10. Таким образом, вы можете сказать, что это функция только для IE10 + (правда, не уверен насчет IE9), но определенно НЕ только для Win8, так как она появляется в версии IE10 для Win7. В любом случае, спасибо за совет, @minitech!
— OMA

272

Я нашел , что это лучше , чтобы установить widthи heightв 0px. В противном случае IE10 игнорирует заполнение, определенное в поле, padding-rightкоторое предназначалось для предотвращения ввода текста поверх значка «X», который я наложил на поле ввода. Я предполагаю, что IE10 внутренне применяет padding-rightвходные данные к ::--ms-clearпсевдоэлементу, и скрытие псевдоэлемента не восстанавливает padding-rightзначение для input.

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

.someinput::-ms-clear {
  width : 0;
  height: 0;
}

3
Вот jsFiddle, иллюстрирующий этот обходной путь: jsfiddle.net/zoldello/S5YRj
— Фил

106

Я бы применил это правило ко всем полям ввода текста типа, поэтому его не нужно дублировать позже:

input[type=text]::-ms-clear { display: none; }

Можно даже конкретизировать, используя просто:

::-ms-clear { display: none; }

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


Спасибо, это сработало для меня.
— Сурадж Хосе

76

Вы должны стиль для ::-ms-clear( http://msdn.microsoft.com/en-us/library/windows/apps/hh465740.aspx ):

::-ms-clear {
   display: none;
}

И вы также стиль ::-ms-revealпсевдоэлемента для поля пароля:

::-ms-reveal {
   display: none;
}

6
Обратите внимание - подумайте, можете ли вы заставить ::-ms-revealэлемент работать, прежде чем удалять его! (Или, если вы предоставляете эту кнопку для всех, как оригинальный аскер.) Некоторые действительно используют ее.
— Ry-

3
@minitech - это звучит великолепно. Можете ли вы рассказать нам, как заставить его работать с привязкой Javascript к событиям ввода? Это не вызывает событие, поэтому с ним почти невозможно работать.
— DarrellNorton

11

Думаю, стоит отметить, что все решения на основе стилей и CSS не работают, когда страница работает в режиме совместимости. Средство визуализации режима совместимости игнорирует элемент :: - ms-clear, даже если браузер показывает символ x.

Если ваша страница должна работать в режиме совместимости, возможно, вы застряли с показом X.

В моем случае я работаю с некоторыми сторонними элементами управления, связанными с данными, и нашим решением было обработать событие «onchange» и очистить хранилище резервных копий, если поле очищается кнопкой x.


0

Чтобы скрыть стрелки и крестик во временном вводе:

#inputId::-webkit-outer-spin-button,
#inputId::-webkit-inner-spin-button,
#inputId::-webkit-clear-button{
    -webkit-appearance: none;
    margin: 0;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.