2015-10-14 8 views
6

Vorrei inserire i numeri con un massimo di otto decimali con un elemento <input>. Tuttavia, se ho un <input type="number" step="0.00000001"> e utilizzare le frecce su/giù sul elemento di input (su Chrome, ecco il jsfiddle), poi ho notazione scientifica per i numeri piccoli:C'è un modo per sopprimere la notazione scientifica per <input type = "numero">?

enter image description here

Se io di ingresso, dire, 5, e quindi premere il tasto freccia, allora la notazione scientifica viene soppressa:

enter image description here

c'è un modo per ottenere il browser per visualizzare il 1e-8 come 0.000000001?

Inoltre, c'è qualche pericolo qui che con numeri sufficientemente piccoli, colpirò gli errori di arrotondamento in virgola mobile?

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

risposta

4

<input oninput='precise(this)' type="number" step="0.00000001"> 
 

 
<script> 
 
    function precise(elem) { 
 
    elem.value = Number(elem.value).toFixed(8); 
 
    } 
 
</script>

È possibile modificare il parametro toFixed al numero desiderato di cifre decimali, se necessario. Spero che aiuti!

+0

è possibile passare l'elemento specifico 'input' con' oninput = precisa (questo) ', poi fare la funzione' precisa (el) {el.value = Number (el.value) .toFixed (8); } ' – AndyPerlitch

+0

@AndyPerlitch Molto buon punto, ho risolto la risposta. – StardustGogeta

2

Ecco una variazione in base a answer di StardustGogeta:

<input oninput="this.value=Number(this.value).toFixed(this.step.split('.')[1].length)" type=number step="0.00000001"> 
Problemi correlati