2012-09-21 28 views
2

我相當新。我正在創建一個要求用戶輸入其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

回答

13

雖然可能會建議通過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

6

當然,你不能完全依靠客戶端(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

1

後與+試試這個[0-9]:

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