2015-04-23 106 views
1

現在我有一個輸入字段是這樣的:HTML輸入不允​​許號

<input class="form-control" type="text"/> 

但它劇照允許數字的輸入。

我希望輸入名稱,並希望在字符串中包含數字時顯示錯誤消息。我怎樣才能做到這一點?

+1

你有什麼已經嘗試過?也許你可以添加這段代碼。 – Vinc199789

+0

也......是這個JUST HTML?或者你使用.net或php或java或其他類型的服務器代碼? – Patrick

+0

Sry,格式化出錯了。這應該是純HTML驗證。 –

回答

4

您可以使用本機HTML5 field validation

如電子郵件驗證(fiddle): <input type="text" title="email" pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" />

針對您的特殊情況下,你可以使用正則表達式像pattern="[a-zA-Z]*"fiddle

當您提交表單它以紅色邊框突出顯示出驗證錯誤。在不同的瀏覽器中,它的行爲會略有不同。

我不認爲有覆蓋每個默認樣式的標準方式,但是有瀏覽器特定的方式來執行此操作(here)。

對於一些風格,你可以有CSS掛鉤到位更改see here

編輯:更新的小提琴。

+0

不錯的主意,但可能不支持舊版瀏覽器。 –

+1

支持Chrome 5+,IE10 +,FF4 +,Opera9.6 +,在Safari中不支持。 – Patrick

+0

@MichaelGiovanniPumo一個polyfill應該照顧舊版瀏覽器, –

0

您可以使用preg_match(http://php.net/manual/en/function.preg-match.php)在PHP中搜索數字。

if (preg_match('/^[0-9]{1,}/', $value)) { 
    echo "ERROR"; 
} else { 
    echo "OK"; 
} 

如果你想用JS來做,你可以使用match()http://www.w3schools.com/jsref/jsref_match.asp

+0

問題是關於HTML,即客戶端驗證。 PHP只能在您提交表單後驗證輸入 –

+0

好的,不會推薦。因爲它非常不安全。但不清楚它應該是純粹的HTML。 – TheFrozenOne

1

您有幾種選擇....

不管選項,您將使用以某種方式或形式的正則表達式。

你可以做到這一點使用JavaScript客戶端...

function Validate() { 
 

 
    var inputValue = document.getElementById("test").value; 
 
    var reg = new RegExp('^\\d+$'); 
 
    var test = reg.test(inputValue); 
 
    
 
    //--Do something with test-- 
 
    console.log(test); 
 
    
 
}
<input id="test" class="form-control" type="text" /> 
 
<button onClick="Validate()">Validate</button>

如果只是普通的HTML沒有服務器端代碼,你將需要使用JavaScript

編輯

而且據我所知,這是在所有的瀏覽器都支持支持JavaScript不管版本。

+0

我不想在JavaScript中進行驗證。我想將它保存在HTML中,並在輸入錯誤時獲得像消息一樣的整潔瀏覽器支持。 –

+0

您可能需要在客戶端使用JavaScript或某種服務器端代碼。 HTML5具有文本框的模式屬性,但正如我所說...它只支持現代瀏覽器...任何使用IE9等舊瀏覽器的用戶都無法正確驗證。 – Patrick

+0

那對我來說沒問題。對舊版瀏覽器的支持不是優先事項。 –

3

這會幫助你鍵入的字符只有:

$(function() { 
 

 
    $('#txtNumeric').keydown(function (e) { 
 
    
 
    if (e.shiftKey || e.ctrlKey || e.altKey) { 
 
    
 
     e.preventDefault(); 
 
     
 
    } else { 
 
    
 
     var key = e.keyCode; 
 
     
 
     if (!((key == 8) || (key == 32) || (key == 46) || (key >= 35 && key <= 40) || (key >= 65 && key <= 90))) { 
 
     
 
     e.preventDefault(); 
 
     
 
     } 
 

 
    } 
 
    
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <b>Enter Text:</b> 
 
    <input type="text" id="txtNumeric" /> 
 
</div>

相關問題