Показывает ввод, который позволяет только числа и десятичную точку?
Есть ли способ определить <input>
, который показывает ввод с клавиатуры, который разрешает только числа и десятичную точку (или запятую для международных пользователей)?
<input type='tel'>
показывает, что телефонная дерьмо мне не нужна, и нет десятичной точки
<input type='number' pattern='[0-9]*'>
показывает все числа, но без десятичной точки
Что я могу сделать, чтобы получить нужные мне данные?
Ответы
Ответ 1
Если вы делаете это в истинном приложении iOS, вы, вероятно, можете добавить собственные кнопки поверх клавиатуры на основе этого вопроса, что об аксессуаре, но тот же процесс будет работать.
В противном случае IamChuckB прав, а пять типов клавиатуры, указанные в библиотеке разработчиков Apple, являются исчерпывающими.
Ответ 2
Вы можете попробовать этот атрибут в поле type = "number":
pattern="\d+(\.\d*)?"
это позволит использовать только цифры с/без десятичной точки и плавающие числа справа.
Ответ 3
См. мой проект кросс-браузерного фильтра значения элемента ввода текста на вашей веб-странице с использованием языка JavaScript: Input Key Filter. Вы можете отфильтровать значение как целое число, число с плавающей запятой или написать собственный фильтр, например, фильтр телефонных номеров. См. Пример кода ввода числа с плавающей запятой
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Input Key Filter Test</title>
<meta name="author" content="Andrej Hristoliubov [email protected]">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<!-- For compatibility of IE browser with audio element in the beep() function.
https://www.modern.ie/en-us/performance/how-to-use-x-ua-compatible -->
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<link rel="stylesheet" href="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.css" type="text/css">
<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/Common.js"></script>
<script type="text/javascript" src="https://rawgit.com/anhr/InputKeyFilter/master/InputKeyFilter.js"></script>
</head>
<body>
<h1>Float field</h1>
Float field:
<input id="Float"
onchange="javascript: onChangeFloat(this)"
onblur="inputKeyFilter.isNaN(parseFloat(this.value), this);"
/>
<script>
CreateFloatFilter("Float");
function onChangeFloat(input){
inputKeyFilter.RemoveMyTooltip();
var elementNewFloat = document.getElementById("NewFloat");
var float = inputKeyFilter.parseFloat(input.value);
if(inputKeyFilter.isNaN(float, input)){
elementNewFloat.innerHTML = "";
return;
}
elementNewFloat.innerHTML = float + " or localized value: " + float.toLocaleString();
}
</script>
New float: <span id="NewFloat"></span>
</body>
</html>
Ответ 4
= > Это позволит использовать только одну десятичную точку (.)
= > Он будет разрешать только трехзначные десятичные значения после точки. вы можете изменить, изменив значение на {1,3} на значение ниже RegEx.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (!string.length)
return YES;
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,3})?)?$";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:nil];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
options:0
range:NSMakeRange(0, [newString length])];
if (numberOfMatches == 0)
return NO;
return YES;
}