HTML как установить значение <input type = "number"> в бесконечность
У меня есть числовой ввод, который я хочу держать целыми числами. Если значение установлено в отрицательное значение, то я хочу, чтобы показанный символ был ∞ (∞
).
Это не работает (вместо "∞" отображается пробел):
<%
if foo <= -1
v = '∞'
else
v = foo
end
%>
<input type="number" value="<%= v %>">
Есть ли способ сделать это, не прибегая к JavaScript?
3 ответа
Каковы ваши требования для наличия поля "номер"? Можете ли вы положиться на проверку формы и использовать Javascript для постепенного улучшения просто ввода цифр. Тогда используйте что-то вроде этого
<input type="text" pattern="([0-9]|∞)+">
(pattern
запретит отправку формы, если это не число или символ бесконечности)
Вам нужно использовать тип text
для этого поля и преобразовать знак бесконечности, используя CGI::unescapeHTML
<%
if foo <= -1
v = CGI::unescapeHTML('∞')
else
v = foo
end
%>
<input type="text" value="<%= v %>">
этот вопрос немного устарел, но если у кого-то еще есть такая же проблема, это было мое решение, оно немного дряблое, но оно работает:
<input type="text" id="myInput" value="∞">
<script>
document.getElementById("myInput").addEventListener("focus", (e) => {
e.target.type = "number";
});
document.getElementById("myInput").addEventListener("blur", (e) => {
if(e.target.value == 0 || isNaN(e.target.value)){
e.target.type = "text";
e.target.value = "∞";
}
});
</script>
Хорошая вещь в этом подходе заключается в том, что пользователь все еще может использовать стрелки для увеличения / уменьшения числа, поскольку тип по-прежнему "число".