只允许输入Tage中的数字没有Javascript

问题描述:

我相当新。我正在创建一个要求用户输入其ID的网页。我希望它是必填字段,只允许数字。我很感激你是否能带领我走向正确的方向。这是迄今为止我所拥有的。只允许输入Tage中的数字没有Javascript

<%@ 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> 
+1

关的题目是:没有JavaScript!任何具体原因?我很想看到解决方案,虽然... – Vishal

+0

没有理由。我在网上看,它只给了我与JavaScript的解决方案。在我看来,它更简单,如果我只是在HTML中做到这一点。 – Yusuf

虽然可能会建议通过JS或服务器上的HTML5 does support this通过模式属性进行较重的验证。

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

刚刚试过这个无济于事:(你有可能在这里偷看一下吗?http://stackoverflow.com/questions/17999067/how-to-force-only-numbers-in-a-input-without-javascript –

+0

@Davo这是一个HTML5属性,所以在没有一些polyfill的情况下,它不适用于较老的IE。你可以在这里查看支持:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/输入 – Brian

+0

@Brain,我很抱歉,我误解了你的答案,它以你描述的方式工作,我认为它应该工作,当你点击键盘按钮,这不是数字,它只是不会输入任何东西(比如返回在js中为false),所以,它没有这样工作,但它不是你写的。谢谢。PS我删除了我的评论:) – dav

当然,你不能完全依靠客户端(JavaScript)的验证,但是这不是一个理由,以避免它彻底。无论有没有它,无论如何你必须做服务器端验证(因为客户端可以禁用javascript)。由于您的非JavaScript解决方案约束,这就是您所剩下的。

所以,一个提交后,如果该字段的值不通过服务器端验证,客户端应该结束了非常同一页上,额外错误消息指定请求值格式 。您还应在之前提供价值格式信息,例如作为工具提示提示(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" /> 
    

    –这给你一个完整的contorl在格式(您可以通过regular expression指定的任何东西)
    –没有视觉差异/增强

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

+0

谢谢你基本上,我需要Java脚本?会谢谢你 – Yusuf

+1

等一下。 HTML5似乎提供了一些改进。将在一段时间内报告。 – charlie

后与+试试这个[0-9]:

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