Υπάρχει τύπος εισόδου float στην HTML5;

Σύμφωνα με το html5.org, το χαρακτηριστικό "value attribute του τύπου εισόδου "number"s, αν έχει καθοριστεί και δεν είναι κενό, πρέπει να έχει τιμή που να είναι έγκυρος αριθμός κινητής υποδιαστολής.&quot,

Ωστόσο, πρόκειται απλώς (στην τελευταία έκδοση του Chrome, τουλάχιστον), για ένα "updown" στοιχείο ελέγχου με ακέραιους αριθμούς, όχι κινητές μονάδες:

Λύση

Ο τύπος number έχει μια τιμή step που ελέγχει ποιοι αριθμοί είναι έγκυροι (μαζί με τους max και min), η οποία είναι προεπιλεγμένη στο 1. Αυτή η τιμή χρησιμοποιείται επίσης από τις υλοποιήσεις για τα βηματικά κουμπιά (π.χ. το πάτημα προς τα πάνω αυξάνει κατά βήμα).

Απλά αλλάξτε αυτή την τιμή σε όποια είναι κατάλληλη. Για χρήματα, αναμένονται πιθανώς δύο δεκαδικά ψηφία:

<input type="number" step="0.01">

(Θα έβαζα επίσης min=0 αν μπορεί να είναι μόνο θετικό)

Αν προτιμάτε να επιτρέψετε οποιονδήποτε αριθμό δεκαδικών ψηφίων, μπορείτε να χρησιμοποιήσετε step="any" (αν και για τα νομίσματα, θα συνιστούσα να μείνετε στο 0.01). Στο Chrome & Firefox, τα κουμπιά βηματισμού θα αυξάνονται/μειώνονται κατά 1 όταν χρησιμοποιείτε το any. (ευχαριστώ την απάντηση του Michal Stefanow'για την επισήμανση του any, και [δείτε το σχετικό spec εδώ][1])

Εδώ'είναι μια παιδική χαρά που δείχνει πώς διάφορα βήματα επηρεάζουν διάφορους τύπους εισόδου:

Σχόλια (13)

Μέσω: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

Αλλά τι γίνεται αν θέλετε όλοι οι αριθμοί να είναι έγκυροι, ακέραιοι και δεκαδικοί; Σε αυτή την περίπτωση, ορίστε το βήμα σε "any"

<input type="number" step="any" />

Λειτουργεί για μένα στο Chrome, δεν έχει δοκιμαστεί σε άλλα προγράμματα περιήγησης.

Σχόλια (2)

Μόλις είχα το ίδιο πρόβλημα, και μπορούσα να το διορθώσω βάζοντας απλώς ένα κόμμα και όχι μια περίοδο/τελεία στον αριθμό λόγω της γαλλικής τοπικοποίησης.

Οπότε λειτουργεί με:

<input type="number" value="" /&gt,

Το 2 είναι εντάξει

2,5 είναι OK

2,5 είναι KO (Ο αριθμός θεωρείται "παράνομος" και λαμβάνετε κενή τιμή).

Σχόλια (1)