【问题标题】:How to hide "maxlength" in html如何在html中隐藏“maxlength”
【发布时间】:2017-07-31 15:27:41
【问题描述】:

以下是我在注册和登录表单中使用的代码,用于限制用户输入有限数量的字符:

$( "#limit1" ).attr('maxlength','11').on('input', function() {
if ($(this).val().length>=11) {
    alert('Maximum 11 characters are allowed!');       
}
});

但是通过“检查元素”,他们能够编辑 html 中的最大长度并提交表单。

那么我该如何阻止呢?我正在寻找任何合适的解决方案来防止用户注册/输入超出允许范围的字符。

【问题讨论】:

  • 你也在服务器端检查长度,如果有太多字符,你会检查表单。您不能阻止用户使用开发工具。
  • 你在服务器上修复它。如果人们坚持,您可以 ajax 值以提醒普通用户并拒绝来自服务器的值。但是为什么要限制?您在运行 80 年代的大型机吗?
  • 您应该永远信任客户。始终在服务器端进行验证,然后根据您的用例截断值或抛出错误。
  • 你需要同时做:客户端检查使表单快速,服务器端确保没有人可以欺骗你的安全。
  • 他们不需要使用您的表单甚至您的网页来提交数据。

标签: javascript jquery html forms input


【解决方案1】:

作为网络开发的经验法则,永远不要相信任何客户端输入,因为无法阻止任何人在网络浏览器中打开开发者工具,并且编辑他们想要的。此外,大多数注册页面垃圾数据都来自机器人,它们会直接发布到您的注册页面,甚至不会打扰您可能写的任何支票。

因此,虽然您可以在客户端进行一些额外的检查以避免实时服务器检查并保持您的网站快速运行,但您必须始终检查服务器端的数据,并相应地通知客户端如果他试图在表格中输入错误的数据。

有些答案需要 JavaScript 才能工作。许多机器人只是忽略 JavaScript,并根据需要将一些数据发布到您的服务器,并且不会受到任何客户端代码的干扰。

所以只需在服务器端验证数据即可。

【讨论】:

    【解决方案2】:

    试试这个,把 return false 防止提交表单。

      $( "#limit1" ).attr('maxlength','11').on('input', function() {
            if ($(this).val().length>=11) {
                alert('Maximum 11 characters are allowed!');       
                return false;
            }
            });
    

    【讨论】:

    • 机器人不会被打扰。
    【解决方案3】:

    这里有一个解决方案https://jsfiddle.net/9pc782eb/2/

    $('#limit1').keypress(function(e){
       if($(this).val().length >= 11) {
          e.preventDefault();
          alert('Maximum 11 characters are allowed!'); 
       }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="text" id="limit1" />

    按键限制用户。

    【讨论】:

    • 像 JG73 回答一样,机器人不会费心发布他们想要的任何数据。
    • 非常感谢,Shiladitya!你是救生员!! :)
    • @ZohrabinClean .. 你可以使用它。
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2018-01-05
    • 2019-04-28
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多