如何仅允许-Ve或+;在javascript中使用正则表达式在文本框中设置值
如何只允许用户输入如何仅允许-Ve或+;在javascript中使用正则表达式在文本框中设置值,javascript,regex,Javascript,Regex,如何只允许用户输入 -Ve或+Ve 使用java脚本 我尝试了以下方法,但它不允许在文本框中输入任何值 function rhFactor(txtBoxObj) { var pve = "+ve"; var nve = "-ve"; var ve = false; if( validTxtBoxObj(txtBoxObj)) { if(pve == txtBoxObj.value || nve == txtBoxObj.value )
-Ve或+Ve
使用java脚本
我尝试了以下方法,但它不允许在文本框中输入任何值
function rhFactor(txtBoxObj)
{
var pve = "+ve";
var nve = "-ve";
var ve = false;
if( validTxtBoxObj(txtBoxObj))
{
if(pve == txtBoxObj.value || nve == txtBoxObj.value )
{
ve = true;
}
if(ve == false)
{
// alert('Allowed RH Factors - +ve,-ve');
txtBoxObj.value="";
}
return false;
}
return true;
}
我就是这样打电话的
onkeyup="rhFactor(this)"
更新:
function validTxtBoxObj(txtBoxObj)
{
if(txtBoxObj != null) return true;
return false
}
请帮助我完成这项工作。正如您所写,您只允许文本框中的-Ve或+Ve值。这不包括键入时需要的值,如+
或+V
(并连接keyup
)。粘贴整个值(Ctrl+V
)应该可以工作
相反,当用户完成输入并转到下一个元素时,检查change
事件的有效性
尝试以下操作:
if( validTxtBoxObj(txtBoxObj))
{
hasve = txtBoxObj.value.indexOf(pve) != -1 || txtBoxObj.value.indexOf(nve) != -1;
if(hasve && parseInt(txtBoxObj.value.replace(pve,'').replace(nve,''),10)+'' != 'NaN' )
{
ve = true;
} else {
// alert('Allowed RH Factors - +ve,-ve');
txtBoxObj.value="";
ve = false;
}
return ve;
}
但正如Bergi所指出的,当用户完成输入时,您必须运行上述验证,如提交或单击事件。validTxtBoxObj做什么?不要使用
onkeyup
。您将无法键入整个值。改为使用onchange
或oninput
。keyup会为每个键触发,因此,只要输入第一个-或+,您就可以根据它永远不会出现的情况进行测试,为什么不将测试限制在值>=3个字符的情况下,或者使用更合适的事件。(或使用a)@Anto:为了可读性和简洁性,您应该去掉ve
变量和validTxtBoxObj
函数。尝试了您所解释的内容,但不起作用,Ctrl+V,我使用了“onkeyup”它正在进行其他验证它只允许所需的值,不允许其他值。