Видалити кнопку "чисте поле" IE10 на певних входах?


742

Безперечно, це корисна функція, але чи можна її відключити?
Наприклад, якщо форма є єдиним текстовим полем і вже має кнопку "Очистити" поруч, зайвим є також X. У цій ситуації було б краще його видалити.

Чи можна це зробити, і якщо так, то як?


1
Це також корисно для поля зі значенням за замовчуванням, де пробіл не має сенсу, наприклад, кількість.
Джо Флін

4
оскільки це не викликає введення тексту, це дуже складно, коли ви прив'язуєте подію JavaScript.
Ківі

Відповіді:


1267

Складіть ::-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, оскільки це з'являється у версії Win7 IE10. У будь-якому випадку, дякую за пораду, @minitech!
ОМА

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
Phil

106

Я застосував би це правило до всіх полів введення тексту тексту, тому його не потрібно дублювати пізніше:

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

Можна навіть отримати менш конкретні, використовуючи просто:

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

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


Дякую, це працювало на мене.
Sooraj Jose Jose

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елемент працювати перед тим, як його видалити! (Або якщо ви надаєте цю кнопку для всіх, як-от оригінальний запитувач.) Деякі її дійсно використовують.
Ри-

3
@minitech - це чудово звучить. Чи можете ви сказати нам, як змусити його працювати з прив'язкою Javascript для вхідних подій? Це не викликає події, тому працювати майже неможливо.
ДарреллНортон

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.