如何在javascript中使用正则表达式仅允许文本框中的-Ve或+ Ve值

时间:2012-11-28 12:12:10

标签: javascript regex

如何仅允许用户输入 -Ve or +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
}

请帮助我完成这项工作。

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

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所指出的,当用户完成输入时,你必须运行上述验证,例如提交或点击事件。

答案 1 :(得分:0)

正如您所写,仅允许文本框中的-Ve或+ Ve值。这不包括++V等值,您在输入时需要这些值(并挂钩keyup)。粘贴整个值(Ctrl+V)应该有效。

相反,检查change事件的有效性 - 当用户完成输入并转向下一个元素时。

Demo at jsfiddle.net