似乎“maxlength”,“min”或“max”HTML属性都没有对iPhone产生以下标记所需的效果:
<input type="number" maxlength="2" min="0" max="99"/>
不是限制数字的数量或输入的数字的值,而是在iPhone 4上键入数字。这个标记适用于我们测试的大多数其他手机。
是什么给出了?
有任何解决方法吗?
如果对解决方案很重要,我们使用jQuery mobile。
谢谢!
答案 0 :(得分:32)
实施例
<强> JS 强>
function limit(element)
{
var max_chars = 2;
if(element.value.length > max_chars) {
element.value = element.value.substr(0, max_chars);
}
}
<强> HTML 强>
<input type="number" onkeydown="limit(this);" onkeyup="limit(this);">
如果您使用的是jQuery,可以稍微整理一下JavaScript:
<强> JS 强>
var max_chars = 2;
$('#input').keydown( function(e){
if ($(this).val().length >= max_chars) {
$(this).val($(this).val().substr(0, max_chars));
}
});
$('#input').keyup( function(e){
if ($(this).val().length >= max_chars) {
$(this).val($(this).val().substr(0, max_chars));
}
});
<强> HTML 强>
<input type="number" id="input">
答案 1 :(得分:3)
根据MDN,maxlength
未使用number
。你有没有尝试过:
<input type="number" min="0" max="99" />
OR
<input type="range" min="0" max="99" />
答案 2 :(得分:2)
答案 3 :(得分:2)
您可以使用此代码:
<input type="number" maxlength="2" min="0" max="99"
onkeypress="limitKeypress(event,this.value,2)"/>
和js代码:
function limitKeypress(event, value, maxLength) {
if (value != undefined && value.toString().length >= maxLength) {
event.preventDefault();
}
}
答案 4 :(得分:1)
正如安德鲁所说,你需要将类型更改为范围,除此之外,你将遇到IE和FF以及可能是旧的ipad浏览器的问题,因为它来自HTML 5,而且它是“新的”。看看这个用JS试过这个系列的人, Specify range of numbers to input in number field using javascript
答案 5 :(得分:1)
您可以使用JavaScript检查框中有多少个字符,如果有太多字符,请删除一个: http://www.webcodingtech.com/javascript/limit-input-text.php
答案 6 :(得分:1)
这是一个更优化的jQuery版本,用于缓存选择器。 它还使用输入类型号不支持的maxlength属性。
// limits the input based on the maxlength attribute, this is by default no supported by input type number
$("input[type=number]").on('keydown keyup',function(){
var $that = $(this),
maxlength = $that.attr('maxlength')
if($.isNumeric(maxlength)){
$that.val($that.val().substr(0, maxlength));
};
});
答案 7 :(得分:1)
jQuery的另一个选项,但onkeypress事件...;)
$("input[type=number]").on('keypress',function(e) {
var $that = $(this),
maxlength = $that.attr('maxlength')
if($.isNumeric(maxlength)){
if($that.val().length == maxlength) { e.preventDefault(); return; }
$that.val($that.val().substr(0, maxlength));
};
});
答案 8 :(得分:0)
我知道这个问题已经有一年了,但我不喜欢这个问题。因为它的工作方式是它显示键入的字符然后将其删除。
相比之下,我将提出另一种类似于Will的方法,它更好地防止角色被显示。另外,我添加了else if
块来检查字符是否为数字,然后验证数字字段是一个很好的函数。
<强> HTML 强>
<input type="number" onkeydown="limit(this);">
<强> JS 强>
function limit(element)
{
var max_chars = 2;
if (arguments[1].char !== "\b" && arguments[1].key !== "Left" && arguments[1].key !== "Right") {
if (element.value.length >= max_chars) {
return false;
} else if (isNaN(arguments[1].char)) {
return false;
}
}
}
答案 9 :(得分:0)
这是针对允许删除键优化的Tripex答案,在键入和粘贴时都有效。
$(document).on("keyup", "#your_element", function(e) {
var $that = $(this),
maxlength = $that.attr('maxlength');
if ($.isNumeric(maxlength)){
if($that.val().length === maxlength) {
e.preventDefault();
// If keyCode is not delete key
if (e.keyCode !== 64) {
return;
}
}
$that.val($that.val().substr(0, maxlength));
}
});
答案 10 :(得分:0)
我使用 jQuery 的解决方案:
JS
function maxlength(event)
{
const ele = event.target;
const maxlength = ele.maxLength;
const value = ele.value;
if (event.type == 'keypress')
{
if (value.length >= maxlength)
{
event.preventDefault();
}
}
else if (event.type == 'keyup')
{
if (value.length > maxlength)
{
ele.value = value.substring(0, maxlength);
}
}
}
$('input[type=number][maxlength]').on('keypress keyup', maxlength);
HTML
<input type="number" maxlength="2">