只允许输入Tag中的Numbers而不使用Javascript

Yus*_*suf 8 html input asp.net-mvc-3

我很新.我正在创建一个网页,询问用户的ID.我希望它是一个必填字段,只允许数字.如果你带领我走向正确的方向,我感激不尽.这就是我到目前为止所拥有的.

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<!DOCTYPE html>

<html>
<head runat="server">
  <title>Search</title>
</head>
<body>
 <div>
  <table align="center">
    <tr>
        <td class="label">
            Enter ID:
        </td>
         <td>
            <input type="text" name="UserId" id="UserId" />
        </td>
     </tr>
   </table>
  </div>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 30

虽然可能建议通过JS或服务器进行更严格的验证,但HTML5 确实通过pattern属性支持这一点.

<input type= "text" name= "name" pattern= "[0-9]"  title= "Title"/>
Run Code Online (Sandbox Code Playgroud)

  • 试过这个无济于事(你有机会偷看这个吗?http://stackoverflow.com/questions/17999067/how-to-force-only-numbers-in-a-input-without-javascript (2认同)
  • 不要过于迂腐,但 OP 使用了“数字”(复数)这个词。这个答案上的模式不是只允许一个数字吗?这也不允许负数或小数位。您可能想在这里寻找更彻底的答案 /sf/ask/1152254141/ (2认同)
  • 如果该字段是必需的,请更新“pattern”属性以包含正则表达式的“一个或多个”量词(“[0-9+]”)。如果可选,您可以使用“零个或多个”(`[0-9*]`)。如果您需要允许小数,请利用“step”属性:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number#step (2认同)

nic*_*kko 14

尝试使用[0-9]之后的+:

input type="text" pattern="[0-9]+" title="number only"
Run Code Online (Sandbox Code Playgroud)

  • @Niby因为没有+,如果您有一些验证,请只接受一个数字! (2认同)

cha*_*lie 10

当然,您不能完全依赖客户端(javascript)验证,但这并不是完全避免它的理由.无论有没有它,你都必须进行服务器端验证(因为客户端可以禁用javascript).由于您的非JavaScript解决方案约束,这正是您留下的.

因此,在提交之后,如果字段值未通过服务器端验证,则客户端应该在同一页面上结束,并附加指定所请求的值格式的错误消息.您还应该在prehands之前提供值格式信息,例如作为工具提示提示(属性).title

HTML 4/XHTML中肯定没有被动的客户端验证机制.

另一方面,在HTML 5中,您有两个选择:

  • 输入类型number:

    <input type="number" min="xxx" max="yyy" title="Format: 3 digits" />
    
    Run Code Online (Sandbox Code Playgroud)

    - 仅验证范围 - 如果用户输入非数字,则提交 空值
    - 使用递增/递减控制增强字段可视化(取决于浏览器)

  • pattern属性:

    <input type="text" pattern="[0-9]{3}" title="Format: 3 digits" />
    <input type="text" pattern="\d{3}" title="Format: 3 digits" />
    
    Run Code Online (Sandbox Code Playgroud)

    - 这使您可以完全控制格式(您可以通过正则表达式指定的任何内容)
    - 没有视觉差异/增强

但在这里,您仍然依赖于浏览器功能,因此在任何一种情况下都要进行服务器端验证.