2013-10-10 103 views
-1

我在我的HTML表單中有一個文本框,並且我想限制用戶在它和0之間輸入一個十六進制值。我該怎麼做?如何限制一個文本框只輸入一個十六進制值

我的HTML文本框代碼:

<div class="input-resp-hpux-vbus"><span><input class="textbox" id="vbus-id" name="vbus-id" type="text" size="5" maxlength="3" value="<?php if(isset($_POST['vbus-id'])) { echo htmlentities ($_POST['vbus-id']); }?>" /></span></div> 
+0

試試這個正則表達式'(0-9 [AF])+' – Praveen

+0

[JavaScript正則表達式 - 匹配一系列十六進制數字]的可能重複(http://stackoverflow.com/questions/2156746/javascript-regular -expressions-match-a-series-of-hexadecimal-numbers) – Praveen

回答

3

你可以使用一個regular expression和驗證之前提交或按鍵後:

Regular expression to validate hex string

var control = document.getElementById('vbus-id')'; 
var regExp = new RegExp(/^0x[0-9A-F]{1,4}$/i); 
if (!regExp.test(control)) 
    alert('invalid'); 
+0

我試過這onkeyup函數。但沒有給出任何警報警告 – acr

+0

我試過用'$('#vbus-id')。bind('keyup',function(){ var control = document.getElementById('vbus-id'); if !control.test(/ ^([A-Fa-f0-9] {2}){8,9} $ /)); alert('invalid'); });'' – acr

+0

對不起@acr,最後一次更新是錯誤的。現在是正確的 –

0

試試這個http://jsfiddle.net/zXbHz/

<div class="input-resp-hpux-vbus"><span><input class="textbox" id="vbus-id" name="vbus-id" type="text" size="5" maxlength="4" onblur="isValidhex(this)" value="" /></span></div> 

function isValidhex(ele) { 
    var isOk = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(ele.value); 
    return (isOk)?ele.value ="" :true ; 
} 
+3

當* test *是明顯的選擇時,爲什麼人們使用* match *? '/ ^#[a-f0-9] {6} $/i.test(s)',它返回一個布爾值,不需要測試或轉換。如果你真的**想要使用*匹配*,考慮'!! str.match(/ ^#[a-f0-9] {6} $/i)'。哦,並且有效的十六進制顏色值可以有3或6位數字。 :-) – RobG

+0

我可以在jsfiddle中輸入任何值。 – acr

+0

我已經將函數** ele.value =「」**中的輸入值重置爲null。檢查http://jsfiddle.net/zXbHz/1/ – shyammtp

相關問題