ซ่อน Spinner ใน Input Number - Firefox 29


202

ใน Firefox 28 ฉันใช้<input type="number">งานได้ดีเพราะมันแสดงแป้นพิมพ์ตัวเลขในฟิลด์อินพุตซึ่งควรมีตัวเลขเท่านั้น

ใน Firefox 29 การใช้ตัวเลขอินพุตจะแสดงปุ่มหมุนที่ด้านขวาของฟิลด์ซึ่งดูเหมือนว่าไร้สาระในการออกแบบของฉัน ฉันไม่ต้องการปุ่มเพราะมันไร้ประโยชน์เมื่อคุณต้องการเขียนบางอย่างเช่นหมายเลข 6 ~ 10 หลัก

เป็นไปได้หรือไม่ที่จะปิดการใช้งานด้วย CSS หรือ jQuery


2
type="number"หากคุณไม่ต้องการให้ลูกศรหมุนแล้วไม่ได้ใช้ คุณสามารถใช้type="text"และpatternแอตทริบิวต์เพื่อตั้งค่า regex เพื่อให้แน่ใจว่าเป็นตัวเลข
Rocket Hazmat

4
-webkit-inner-spin-button -webkit-outer-spin-button พร้อมกับ -webkit-ลักษณะ: ไม่มี; กำไรขั้นต้น: 0; อย่าทำงานใน Firefox
NereuJunior

12
@RocketHazmat: type="number"จำเป็นสำหรับเบราว์เซอร์มือถือเพื่อแสดงแป้นตัวเลขแทนแป้นพิมพ์แบบเต็ม
CodeManX

3
<input type="tel">เป็นเพียงตัวเลขเท่านั้นและไม่รวมถึงสปินเนอร์
TomasVeras

5
การเปลี่ยนtype="text"เป็นแนวคิดที่ไม่ดีเนื่องจากอุปกรณ์สัมผัสจะแสดงแป้นพิมพ์ผิด
WhyNotHugo

คำตอบ:


523

ตามที่โพสต์บล็อกนี้คุณจะต้องตั้งอยู่บน-moz-appearance:textfield;input

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" step="0.01"/>


1
ฉันห่อ@-moz-document url-prefix() { ... }มันไว้และทำในสิ่งที่ฉันต้องการ: ซ่อนเหยื่อใน Firefox ที่พวกเขาดูไม่ดี แต่ทำให้พวกมันมีชีวิตอยู่ในเบราว์เซอร์อื่น ๆ
Michael Scheper

4
ข้อมูลที่เป็นประโยชน์เพิ่มเติมจาก Geoff Graham: อินพุตตัวเลข - การเปรียบเทียบค่าเริ่มต้นของเบราว์เซอร์
Richard Deeming

3
วิธีนี้ใช้ได้ผลและแน่นอนว่ามันจะลบสปินเนอร์ แต่ตอนนี้คุณสามารถป้อนตัวอักษรและตัวเลขได้แล้ว หวังว่าจะมีใครบางคนหาวิธีจัดการกับสถานการณ์นั้นโดยไม่ต้องตรวจสอบคีย์ที่ป้อนถ้าเป็นตัวเลขหรือไม่
Jovanni G

1
@JovanniG: แม้ว่าคุณจะไม่ลบสปินเนอร์คุณยังสามารถป้อนอักขระที่ไม่ใช่ตัวเลขในอินพุตใน Firefox ลองทดลองกับการสาธิต MDN Chrome ป้องกันการป้อนข้อมูลที่ไม่ใช่ตัวเลขในทั้งสองตัวอย่าง
Richard Deeming

1
@alxndr: นอกจากนี้ฉันเพิ่งลอง "เรียกใช้ข้อมูลโค้ด" ใน Chrome 66 และทำงานได้ตามที่คาดไว้
Richard Deeming

50

เป็นค่าที่ชี้ให้เห็นว่าค่าเริ่มต้นของ-moz-appearanceองค์ประกอบเหล่านี้อยู่number-inputใน Firefox

หากคุณต้องการที่จะซ่อนปั่นโดยเริ่มต้นคุณสามารถตั้งค่า-moz-appearance: textfieldแรกและถ้าคุณต้องการปินเนอร์ที่จะปรากฏบน:hover/ คุณสามารถเขียนทับจัดแต่งทรงผมก่อนหน้านี้มี:focus-moz-appearance: number-input

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

ฉันคิดว่าบางคนอาจพบว่ามีประโยชน์เพราะเมื่อเร็ว ๆ นี้ฉันต้องทำสิ่งนี้เพื่อพยายามปรับปรุงความสอดคล้องระหว่าง Chrome / FF (เนื่องจากนี่เป็นวิธีป้อนข้อมูลตัวเลขตามค่าเริ่มต้นใน Chrome)

หากคุณต้องการดูค่าทั้งหมดที่มีให้-moz-appearanceคุณสามารถค้นหาได้ที่นี่ (mdn)


11

ในSASS/ SCSSสไตล์คุณสามารถเขียนเช่นนี้

input[type='number'] {
  -moz-appearance: textfield;/*For FireFox*/

  &::-webkit-inner-spin-button { /*For Webkits like Chrome and Safari*/
    -webkit-appearance: none;
    margin: 0;
  }
}

สไตล์รหัสนี้สามารถใช้ได้PostCSSแน่นอน


7
/* for chrome */
    input[type=number]::-webkit-inner-spin-button,
    input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;}             


/* for mozilla */  
   input[type=number] {-moz-appearance: textfield;}

3

ต้องเผชิญกับปัญหาโพสต์เดียวกันอัปเดต Firefox เป็น 29.0.1 นี่เป็นรายการที่นี่ https://bugzilla.mozilla.org/show_bug.cgi?id=947728

Solutions: พวกเขา (พวก Mozilla) มีการแก้ไขนี้โดยการแนะนำการสนับสนุนสำหรับ "-moz ปรากฏตัว" <input type="number">สำหรับ คุณเพียงแค่ต้องมีสไตล์ที่เกี่ยวข้องกับช่องใส่ของคุณด้วย " -moz-appearance:textfield;"

ฉันชอบวิธี CSS เช่น: -

.input-mini{
-moz-appearance:textfield;}

หรือ

คุณสามารถทำแบบอินไลน์ได้เช่นกัน:

<input type="number" style="-moz-appearance: textfield">

0

ฉันผสมคำตอบสองสามข้อจากคำตอบด้านบนและจากวิธีลบลูกศรออกจากอินพุต [type = "number"] ใน Opera ใน scss:

input[type=number] {
  &,
  &::-webkit-inner-spin-button,
  &::-webkit-outer-spin-button {
    -webkit-appearance: none;
    -moz-appearance: textfield;
    appearance: none;

    &:hover,
    &:focus {
      -moz-appearance: number-input;
    }
  }
}

Tested on chrome, firefox, safari

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.