如何仅允许-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”它正在进行其他验证它只允许所需的值,不允许其他值。