2013-10-10 63 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

相关问题