Javascript 使用jquery强制输入字段的长度有更好的选择吗

Javascript 使用jquery强制输入字段的长度有更好的选择吗,javascript,jquery,html,Javascript,Jquery,Html,是否有更好的方法确保也遵守最大长度?我注意到,对于某些html5输入类型,maxlength甚至max value属性在所有浏览器中都不起作用: 我会这样做,以确保它的工作,但有一个更清洁的替代品吗 javascript/jquery: var checkLength = function(element, maxlength) { elementValue = $(element).val(); if($(element).val().length > maxlen

是否有更好的方法确保也遵守最大长度?我注意到,对于某些html5输入类型,maxlength甚至max value属性在所有浏览器中都不起作用:

我会这样做,以确保它的工作,但有一个更清洁的替代品吗

javascript/jquery:

 var checkLength = function(element, maxlength) {
     elementValue = $(element).val();
     if($(element).val().length > maxlength) {
         $(element).val(elementValue.substr(0, maxlength));
     };
 }
html:


关于这一点有什么想法吗?

jquery有一个解决方案。当用户输入的字符太多或太少时,它甚至会告诉用户。代码如下所示:

$("#"+formname).validate({
    rules: {
        myNumberField: {
            required: true,
            minlength: 4,
            maxlength: 50
        },
        // etc
    }
});
/*编辑:

你可以这样做:

$("input").keypress(function(e) {
    if($(this).val().length > 30) {
         e.stopPropagation(); //or e.preventDefaut(); don't remember
    }
});
但在此之后,您必须使用服务器端来控制它;)

编辑*/

有两种主要解决方案:

纯HTML版本:

<input type="text" id="Textbox" name="Textbox" maxlength="10" />
但无论如何,没有好的解决办法。你不可能适应每一个客户端糟糕的HTML实现,这是一场不可能获胜的战斗。这就是为什么最好在服务器端使用PHP/Python/which脚本进行检查


您发现哪些浏览器不适用于
maxlength
?您可以尝试我针对textarea的解决方案:我没有列表,但我们注意到,在iphone上,mobile safari不会使用mexlength限制数字输入类型,也似乎不关心min和max属性。这不是内置的。你需要jQuery验证插件。你的意思是说maxlength验证也应该从服务器端完成。你能想象每一次更改和键控都会有多少次调用。别忘了
粘贴
事件。右键单击或浏览器菜单“粘贴”将绕过JS,“基于键”的验证。@MilindAnantwar-他的意思是,提交值后,再次检查长度,以确保值符合要求。在大多数情况下,依赖前端验证作为唯一的验证是一个非常糟糕的主意。是的,你可以用javascript检查maxlength,但唯一好的方法是用php或其他工具在服务器端检查;)我也检查了服务器端,我只是很惊讶除了这个给定的答案之外,没有一个更有效的解决方案来解决这个问题,这个答案基本上就是我的工作原理。
<input type="text" id="Textbox" name="Textbox" maxlength="10" />
function limitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } 
}