【问题标题】:Enforce limit on numeric input. [closed]对数字输入实施限制。 [关闭]
【发布时间】:2013-02-08 07:24:41
【问题描述】:

所以我有这个:

<input name="data[Donation][amount]" value="0.00" step="any" maxlength="12" type="number" id="DonationAmount">

我的问题是如何确保没有负数输入该字段?如果可能的话,我想把它固定在后端和前端。

谢谢。

【问题讨论】:

  • 你永远不会信任客户端。
  • 在服务器端也验证...
  • 你试过什么?在您的情况下,什么是负数?在您的问题中,什么是非负数?

标签: php html css


【解决方案1】:

在客户端,您可以使用 JavaScript 进行测试

var num=123.45;
$("#DonationAmount").val().match(/^[0-9.]+$/)

在服务器端你可以检查

$num = "100";
if ( (int)$num == $num && (int)$num > 0 )

【讨论】:

    【解决方案2】:

    您可以为此使用 min 和 max 属性!

    <input type="number" min="0" max="10" />
    

    允许用户选择 0 到 10 之间的数字!

    如果你的后端是用 PHP 构建的,你可以像这样检查它:

    if($_POST["data"]["Donation"]["amount"] < 0) {
        return false;
    }
    

    【讨论】:

      【解决方案3】:

      客户端:

      $("#DonationAmount").keypress(function(event) {
        if ( event.which == 45 || event.which == 189 ) {
            event.preventDefault();
         }
      });
      

      这将确保'-'符号不能输入文本字段

      服务器端:

      if($_POST["data"]["Donation"]["amount"] < 0) {
          return false;
      }
      

      HTML:

      <input name="data[Donation][amount]" value="0.00" step="any" maxlength="12" min="0" type="number" id="DonationAmount">
      

      【讨论】:

        【解决方案4】:

        在前端,您应该使用 javascript 来执行此操作。

        <script type="text/javascript">
        function checknumber(val)
        {
            if(val < 0)
            {
                 alert('invalid value');
            }
        }
        </script>
        
        <input name="data[Donation][amount]" value="0.00" step="any" maxlength="12" type="number" id="DonationAmount" onblur="checknumber(this.value)">
        

        在服务器端你可以这样做...

        <?php
            $Amount = $_POST["data"]["Donation"]["amount"];
        
            if($Amount < 0 || !is_numeric($Amount))
            {
                echo "Invalid value";
            }
        ?>
        

        【讨论】:

        • $_POST['buy']=6-10;像这样更改它并尝试,删除 qoutes 否则它将把它作为字符串。 :)
        • @TheOptometrist 如何在输入类型为“数字”时插入 6-10
        • 永远不要相信客户mohit! @PrasanthBendra 完全正确
        • @TheOptometrist 我认为你是对的,我已经更改了代码...
        猜你喜欢
        • 1970-01-01
        • 2017-11-06
        • 2011-12-05
        • 2017-06-23
        • 2020-03-20
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        相关资源
        最近更新 更多