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

时间:2012-09-21 15:25:18

标签: html asp.net-mvc-3 input

我很新。我正在创建一个网页,询问用户的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>

3 个答案:

答案 0 :(得分:27)

虽然可能建议通过JS或服务器,HTML5 does support this通过模式属性进行更严格的验证。

<input type= "text" name= "name" pattern= "[0-9]"  title= "Title"/>

答案 1 :(得分:13)

在[0-9]之后使用+:

input type="text" pattern="[0-9]+" title="number only"

答案 2 :(得分:10)

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

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

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

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

  • 输入number类型:

    <input type="number" min="xxx" max="yyy" title="Format: 3 digits" />
    

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

  • 增强了视野
  • pattern属性:

    <input type="text" pattern="[0-9]{3}" title="Format: 3 digits" />
    <input type="text" pattern="\d{3}" title="Format: 3 digits" />
    

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

但是你仍然依赖浏览器功能,所以在任何一种情况下都要进行服务器端验证。