【问题标题】:Are there any better options for forcing the length of an input field with jquery有没有更好的选择来强制使用 jquery 输入字段的长度
【发布时间】:2014-02-11 15:50:33
【问题描述】:

是否有更好的方法来确保也遵守最大长度?我注意到对于某些 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:

 <input name="myNumberField" id="myNumberField" type="tel" onKeyUp="checkLength(this, 5);" />

对此有什么想法吗?

【问题讨论】:

  • 您发现maxlength在哪些浏览器中不起作用?
  • 你可以试试我的 textarea 解决方案:stackoverflow.com/questions/4459610/…
  • 我没有列表,但我们在 iphone 上注意到移动 safari 不会使用 mexlength 来限制数字输入类型,它似乎也不关心 min 和 max 属性。

标签: javascript jquery html


【解决方案1】:

jquery 有一个form validation plugin 可以处理这个问题。它甚至会告诉用户何时输入了太多或太少的字符。代码如下所示:

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

【讨论】:

  • 这不是内置的。您需要 jQuery 验证插件。
【解决方案2】:

/*编辑:

你可以这样做:

$("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" />

javascript 之一(附加到 onKey 事件):

function limitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } 
}

但无论如何,没有好的解决方案。你无法适应每个客户糟糕的 HTML 实现,这是一场不可能获胜的战斗。这就是为什么最好在服务器端检查它,使用 PHP / Python / 任何脚本。

check this topic

【讨论】:

  • 你的意思是说maxlength验证也应该从服务器端完成。你能想象每次 onchange 和 keyups 会进行多少次调用吗?
  • 不要忘记paste 事件。 . .右键单击或浏览器菜单“粘贴”将绕过 JS,“基于键”的验证。
  • @MilindAnantwar - 他的意思是,一旦提交了值,请再次检查长度,以确保值符合要求。在大多数情况下,将前端验证作为唯一的验证是一个真的坏主意。 . .这是很容易规避的方法。
  • 是的,您可以使用 javascript 检查 maxlength,但唯一的好方法是检查服务器端,使用 php 或其他 ;)
  • 我也会检查服务器端,但我很惊讶除了这个给定的答案之外没有更有效的解决方案,这基本上是我的工作方式。
猜你喜欢
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2023-01-05
  • 2016-08-11
  • 2012-05-02
  • 1970-01-01
相关资源
最近更新 更多