Czy Mogę ukryć pole spin wprowadzania numeru HTML5?

Czy istnieje spójny sposób w różnych przeglądarkach, aby ukryć nowe pola spin, które niektóre przeglądarki (takie jak Chrome) renderują dla wejścia HTML z numerem typu? Szukam metody CSS lub JavaScript, aby zapobiec pojawianiu się strzałek w górę / w dół.

<input id="test" type="number">
Author: Sebas, 2010-09-25

14 answers

Ten CSS skutecznie ukrywa przycisk spin dla przeglądarek webkit (przetestowaliśmy go w Chrome 7.0.517.44 i Safari w wersji 5.0.2 (6533.18.5)):

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    /* display: none; <- Crashes Chrome on hover */
    -webkit-appearance: none;
    margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
}

Zawsze możesz użyć Inspektora (webkit, ewentualnie Firebug dla Firefoksa), aby wyszukać dopasowane właściwości CSS dla interesujących Cię elementów, poszukać Pseudo elementów. Ten obrazek pokazuje wyniki dla elementu wejściowego type= "number":

Inspektor dla input type=number (Chrome)

 831
Author: antonj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-22 22:53:35

Firefox 29 obecnie dodaje obsługę elementów liczbowych, więc oto fragment ukrywania spinnerów w przeglądarkach opartych na webkit i moz:

input[type='number'] {
    -moz-appearance:textfield;
}

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    -webkit-appearance: none;
}
<input id="test" type="number">
 368
Author: swehren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 10:12:29

Krótka odpowiedź:

input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
input[type="number"] {
    -moz-appearance: textfield;
}
<input type="number" />

Dłuższa odpowiedź:

Aby dodać do istniejącej odpowiedzi...

Firefox:

W aktualnych wersjach Firefoksa domyślna wartość (user agent) -moz-appearance właściwość {[31] } na tych elementach to number-input. Zmiana na wartość textfield skutecznie usuwa spinner.

input[type="number"] {
    -moz-appearance: textfield;
}

W niektórych przypadkach możesz chcieć, aby spinner był ukryty początkowo, a następnie pojawił się po najechaniu na kursor/focus. (To obecnie domyślne zachowanie w Chrome). Jeśli tak, możesz użyć następującego:

input[type="number"] {
    -moz-appearance: textfield;
}
input[type="number"]:hover,
input[type="number"]:focus {
    -moz-appearance: number-input;
}
<input type="number"/>

Chrome:

W aktualnych wersjach Chrome domyślna wartość (user agent) -webkit-appearance właściwość na tych elementach jest już textfield. Aby usunąć spinner, wartość właściwości -webkit-appearance musi zostać zmieniona na none na ::-webkit-outer-spin-button/::-webkit-inner-spin-button pseudo klasy (domyślnie jest to -webkit-appearance: inner-spin-button).

input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
<input type="number" />

To warto zwrócić uwagę, że margin: 0 służy do usuwania marginesu w starszych wersjach Chrome.

Obecnie, w chwili pisania tego, oto domyślna stylizacja agenta użytkownika na pseudo klasie 'inner-spin-button':

input::-webkit-inner-spin-button {
    -webkit-appearance: inner-spin-button;
    display: inline-block;
    cursor: default;
    flex: 0 0 auto;
    align-self: stretch;
    -webkit-user-select: none;
    opacity: 0;
    pointer-events: none;
    -webkit-user-modify: read-only;
}
 300
Author: Josh Crozier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-14 03:40:12

Aby wyświetlić klawiaturę numeryczną w przeglądarce iPhone ' a, należy skorzystać z poniższego podręcznika user experience coding guide firmy Apple dla mobilnego Safari:]}

<input type="text" pattern="[0-9]*" />

A pattern z \d* również zadziała.

 117
Author: team_steve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-15 22:22:11

Spróbuj użyć input type="tel" zamiast tego. Wyskakuje Klawiatura z numerami i nie pokazuje okienek obrotowych. Nie wymaga JavaScript, CSS, wtyczek ani czegokolwiek innego.

 38
Author: MERT DOĞAN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 09:36:42

Napotkałem ten problem z input[type="datetime-local"], który jest podobny do tego problemu.

I znalazłem sposób, aby przezwyciężyć tego rodzaju problemy.

Najpierw musisz włączyć funkcję shadow-root chrome przez "DevTools -> Settings -> General -> Elements - > Show user agent shadow DOM"

Wtedy możesz zobaczyć wszystkie shadowed DOM elementy , na przykład dla <input type="number">, pełny element z shadowed DOM jest:

<input type="number">
  <div id="text-field-container" pseudo="-webkit-textfield-decoration-container">
    <div id="editing-view-port">
      <div id="inner-editor"></div>
    </div>
    <div pseudo="-webkit-inner-spin-button" id="spin"></div>
  </div>
</input>

Cień DOM wejścia [type= " number"

Oraz zgodnie z tymi informacjami, możesz szkicować niektóre CSS, aby ukryć niechciane elementy, tak jak powiedział @Josh.

 8
Author: Xiao Hanyu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-30 11:30:04

input[type=number]::-webkit-inner-spin-button, 
input[type=number]::-webkit-outer-spin-button {
     -webkit-appearance: none;
<input id="test" type="number">
 4
Author: Prince Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 10:11:24

Nie to o co prosiłeś, ale robię to z powodu błędu Focusa w WebKit z spinboxami:

// temporary fix for focus bug with webkit input type=number ui
if (navigator.userAgent.indexOf("AppleWebKit") > -1 && navigator.userAgent.indexOf("Mobile") == -1)
{
    var els = document.querySelectorAll("input[type=number]");
    for (var el in els)
        el.type = "text";
}
To może dać ci pomysł, aby pomóc w tym, czego potrzebujesz.
 3
Author: Gaurav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-08 11:10:33

Na Firefoksie dla Ubuntu, wystarczy użyć

    input[type='number'] {
    -moz-appearance:textfield;
}
Zrobił dla mnie sztuczkę.

Dodawanie

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    -webkit-appearance: none;
}

Doprowadziłoby mnie do

Nieznana pseudo-klasa lub pseudo-element '- webkit-outer-spin-button'. Zestaw reguł zignorowany z powodu złego selektora.

Za każdym razem próbowałem. To samo dotyczy wewnętrznego przycisku spin.
 2
Author: sonny_boy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-18 21:16:28

To jest lepsza odpowiedź, którą chciałbym zaproponować na mouse over i bez mouse over

input[type='number'] {
  appearance: textfield;
}
input[type='number']::-webkit-inner-spin-button,
input[type='number']::-webkit-outer-spin-button,
input[type='number']:hover::-webkit-inner-spin-button, 
input[type='number']:hover::-webkit-outer-spin-button {
-webkit-appearance: none; 
 margin: 0; }
 2
Author: Swap-IOS-Android,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 09:20:48

Aby to działało w Safari znalazłem dodanie !ważne dla webkitu dostosowanie wymusza ukrycie przycisku spin.

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    /* display: none; <- Crashes Chrome on hover */
    -webkit-appearance: none !important;
    margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
}

Nadal mam problem z wypracowaniem rozwiązania dla Opery.

 1
Author: luckychii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-03 00:45:00

Może zmienić wprowadzanie liczb za pomocą javascript na wprowadzanie tekstu, gdy nie chcesz spinnera;

document.getElementById('myinput').type = 'text';

I zatrzymać wprowadzanie tekstu przez użytkownika;

  document.getElementById('myinput').onkeydown = function(e) {
  if(!((e.keyCode > 95 && e.keyCode < 106)
    || (e.keyCode > 47 && e.keyCode < 58) 
    || e.keyCode == 8
    || e.keyCode == 9)) {
          return false;
      }
  }

Następnie zmień javascript z powrotem w przypadku, gdy chcesz spinner;

document.getElementById('myinput').type = 'number';

To działało dobrze dla moich celów

 1
Author: user3121518,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-26 12:44:12

Dodaj tylko ten css, aby usunąć spinner na wejściu liczby

/* For Firefox */

input[type='number'] {
    -moz-appearance:textfield;
}



/* Webkit browsers like Safari and Chrome */

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
 1
Author: Sanjib Debnath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 09:51:06

Wiem, że odpowiedź na to pytanie jest stara, ale dodam trochę. Powyższe odpowiedzi (odnoszące się do odpowiedzi @ swehren) są poprawne, ale gdy wejście jest wyłączone, nadal można wpisywać znaki alfanumeryczne.

 0
Author: Jeff Yan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-18 07:57:05