通过onkeyup事件Jquery进行文本框验证,而不使用警报

时间:2013-07-19 06:49:41

标签: javascript jquery validation alert

我的html页面中有以下文本框。

到目前为止我使用的代码是。

<input type="text" id = "points" onkeyup="Validate()">
function Validate(){


var text_value = document.getElementById("points").value;
alert(text_value);

   if (!text_value.match(/^[56789]$/) && document.getElementById(called_id).value !="")
    {
       document.getElementById("points").value="";
       //  document.getElementById("points").focus(); 
       alert("Please Enter only between 5 and 10 ");
    }

}     

可接受的值为5,6,7,8,9和10。 我发现基于onkeyup事件的方式只接受5,6,7,8和9 ..我想知道如何在那里包含10。 另外,我想知道使用jquery的onkeyup事件验证。

  1. 如果用户提供除此之外的任何其他值,则应在文本框右侧显示“值应介于5和10之间”(不作为警报)。
  2. 如果第一个输入值为1,则应等待按下下一个键。如果为0则接受或者引发与先前案例相同的错误消息。

3 个答案:

答案 0 :(得分:1)

Working Jsfiddle

我更喜欢没有正则表达式:

function validate() {
    var num = document.getElementById("points2").value;
    var num = parseInt(num, 10);
    alert(num);
    if (num < 5 || num > 10) {
        document.getElementById("points2").value = "";
        alert("Please Enter only between 5 and 10 ");
    }
}

将您的正则表达式更改为:

/^([5-9]|10)$/

您应该使用onchange事件:

<input type="text" id = "points"  onchange="Validate()">

function Validate(){    
var text_value = document.getElementById("points").value;
alert(text_value);

   if (!text_value.match(/^([5-9]|10)$/) && document.getElementById(called_id).value !="")
    {
       document.getElementById("points").value="";
       //  document.getElementById("points").focus(); 
       alert("Please Enter only between 5 and 10 ");
    }

}  

答案 1 :(得分:0)

$('#textbox').keyup(function() {
    var value = $('#textbox').val();
    if(value != ''){
        if(!value.match(/^[5678910]$/))  
            textboxError();
        else{
            var length = value.length;
            if(value.charAt(length-1) == 0 && value.charAt(length-2) != 1)
                textboxError();
        }
    }
};

$('#textbox').change(function() {
    var value = $('#textbox').val();
    if(value != '')
        textboxError();
    }
};

function textboxError(){
    $('#textbox').val(''); 
    $('#textbox').focus(); 
    alert("Please Enter only between 5 and 10 ");
}

我们正在做的是,

  1. 检查值是否为空(如果为空则不执行任何操作)
  2. 如果不为空,请检查该值是否与定义的集合
  3. 匹配
  4. 如果匹配,现在我们检查10.我们做的是,如果最后输入的字段为0,则前一个字段必须为1,因此它为10.如果不是,则抛出错误。
  5. 但是这是一个问题,用户可能输入1并离开该字段而不输入另一个字符。所以,你可以通过onchange字段扩展它。
  6. Onchange,现在我们检查计数为1,并且应该匹配10的数量。它解决了我们的问题。您不必担心0,因为我们已经在keyup块中检查它。
  7. 我没有检查代码。因此,如果有任何拼写错误或错误,您可以替换它们。

答案 2 :(得分:0)

正如扎赫尔艾哈迈德所说,//get file extension $filename = $row['uploadm_name']; $path = $filename; $ext = pathinfo($path, PATHINFO_EXTENSION); if($ext='doc') { include ('doc.php'); } else if($ext='docx') { include ('docx.php'); } 也会抓到10。对于事件监听器,您可以使用

/^([5-9]|10)$/

这会绕过jQuery,这可能会让一些人感到不满,但“输入”事件会立即触发,如果文本被其他方法粘贴或输入,也会起作用。