Вынуждать два десятичных положения в неударе в лунку type = “number”

Они попросили у меня немного редкую вещь, что поля input числовые страницы JSP имейте 2 назначенных по умолчанию десятичных.

До сих пор совсем нормальный:


Итак, клиент хочет, чтобы у количества ВСЕГДА было 2 десятичных положения, даже для 0:

introducir la descripción de la imagen aquí

он должен бы быть:

introducir la descripción de la imagen aquí

Или же, пока ты используешь стрелы, чтобы увеличивать количество или загружаешь с базы данных стоимость нулями в десятичных положениях, что эта стоимость не вырисовалась (или же, sobreescribir назначенное по умолчанию поведение, которое игнорирует нули в правую сторону)

MVCE

https://jsfiddle.net / yorch / ezog2m13 / 5 /

Это intendado с pattern="regex":

^\d+\.\d{2}$
\d.{2}$

но оно, кажется, не функционирует.


ДОБАВЛЕННЫЕ

  • Как он обозначился rnd: http://bugzilla.mozilla.org/show_bug.cgi?id=1003896
  • Я попробовал решение путь html но если кому-то приходит в голову что-то в javascript / jquery что это решил, также стоит мне :).

4
задан 13.04.2017, 16:00
2 ответа

Ты не можешь использовать признак pattern с type="number", как объясняется он в MDN (свойство pattern)

Восток признак применяется, когда стоимость type - text, search, tel, url или электронная почта; по-другому, он будет проигнорирован.

Восток сфокусировался в языке сценариев JavaScript он очень простой и функционирует. , Но это не та soluciГіn больше Гіptima/deseable, так как в течение одной fracciГіn секунды он показывает стоимость 1.1 перед тем, как обновлять 1.10, однако может доставать тебя из сбоя. .

Спасибо @AlvaroMontoro! что комментировал, что используя input вместо change эффект скрытости исчезает.

var el = document.getElementById("in")

// te aseguras que el valor inicial tiene el formato correcto
el.value = el.valueAsNumber.toFixed(2)

// manejador que asegura que el valor tiene el formato correcto cuando 
// se modifica el valor, ya sea manual o con los botones inc/dec
el.addEventListener('input', function(event) {
  event.target.value = event.target.valueAsNumber.toFixed(2)
});
<input id="in" value="1" type="number" step="0.01">
3
ответ дан 24.11.2019, 14:45
  • 1
    Хороший ответ. Если ты используешь событие input вместо change, не виден неправильный формат в течение одной d и # 233; вершина секунды –  Alvaro Montoro♦ 10.03.2016, 21:44
  • 2
    проблема сейчас - начальная стоимость, не форматируется до того, чтобы измениться раньше: jsfiddle.net/yorch/ezog2m13/5 –  Jordi Castilla 11.03.2016, 13:51
  • 3
    @JordiCastilla это легкое для того, чтобы быть упорядоченным, обрати внимание мое редактирование, равный у него есть проблема позволения не вводить данные в компьютер вручную, именно поэтому я поместил change во-первых, но хорошим не кажется, что он находит soluci и # 243; n оптимальная. –  rnrneverdies 11.03.2016, 14:02

Он советовал бы, что ты использовал plugin jquery, чтобы применять маску на textbox

Маскед Инпут Plugin

Маск Плухин

Идея, дело в том, что маска ограничила неудар в лунку пользователя в контроле.

$(function(){
  
    $("#textbox1").mask("9999.99");

  
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="https://raw.githubusercontent.com/digitalBush/jquery.maskedinput/1.4.1/dist/jquery.maskedinput.min.js"></script>

<input type="text" id="textbox1">

Конечно это одинокое пример, было бы нужно анализировать, возможно определять ли маску, которая приспосабливалась бы к тому, что ты ищешь. Идея состоит в том, чтобы не санкционировать но предельная маска то, что пользователь вводит

в компьютер
-1
ответ дан 24.11.2019, 14:45
  • 1
    Привет Леандро, я это протестировал и оно не функционирует. Доказательство меняясь в type = number и step=0.01, и когда ты используешь кнопки up, и down вернись в 1.1 без нуля. Привет –  rnrneverdies 10.03.2016, 18:45
  • 2
    @rnd, но это маска, которая применяется к textbox, не затрагивает type, который применяется, кроме того, в который кнопки up или down ты относишься? –  Leandro Tuttini 10.03.2016, 18:47
  • 3
    Проблема состоит в том, что он работает с типом элемента type = и quot; text" и OP хочет использовать number, из-за кнопок увеличивания и decrementar основанные на признаке step. jsfiddle.net/rnrlabs/cmaxyyrj производит эту ошибку The input element's type ('number') does not support selection. –  rnrneverdies 10.03.2016, 19:16

Теги

Похожие вопросы