严格验证文本字段

时间:2011-07-01 11:29:25

标签: javascript jquery html

在我的表格上,有几天和一个月的字段。

我想对此进行简单的验证。一旦用户输入月份,即12,那么只有它才能进入下一个字段。

如果用户输入无效月份,则应再次关注月份字段,并应选择先前输入的文本。

我正在尝试使用.focus().select() jQuery函数,但它无法正常工作

这是小说验证只是为了测试,它可以是任何数字或任何标签。

这是jSFiddle link

<input type="text" id="days" /> <input type="text" id="month" />

jQuery("#days").blur(function(){
    if(jQuery(this).val() == "12"){
        alert("valid");
    }
    else {
        alert("invalid");
        jQuery(this).focus().select();        
    } 
 });

4 个答案:

答案 0 :(得分:1)

使用此HTML

<label for="day">Day<input type="text" id="day" name="day"/></label>
<label for="month">Month<input type="text" id="month" name="month" maxlength=2/></label>

使用此JS

$('#day').live('keydown', function(e){
    keyCode = e.keyCode || e.which;
    if(keyCode == 9){
        if($(this).val()<1 || $(this).val()>32){
           e.preventDefault();
           $(this).trigger('select');
           console.log('error'); 
        }   
    }        
});
$('#month').live('keydown', function(e){
    keyCode = e.keyCode || e.which;
    if(keyCode == 9){
        if($(this).val()<1 || $(this).val()>12){
           e.preventDefault();
           $(this).trigger('select');
           console.log('error'); 
        }   
    }        
});

链接:http://jsfiddle.net/r6j7C/

答案 1 :(得分:1)

模糊事件是否可能通过您的代码,然后通过关注导致模糊的任何事情来完成?如果代码从jQuery("#days").blur更改为jQuery("#month").focus,我可以让代码生效。

jQuery("#month").focus(function(){
                if(jQuery(this).val() == "12"){
                        alert("valid");
                }
                        else
                {
                        alert("invalid");
                        jQuery("#days").focus();                      
                }
});

答案 2 :(得分:1)

.focus().select()(对于你需要它们)不是jQuery函数,这些是简单的Javascript函数。

嗯,实际上它们在jQuery中有意义,它们用于事件绑定(分别用于onfocus和onselect)。

您可以通过以下方式致电:

 this.focus();
 this.select();

如果你需要“设置焦点在这个元素上”和“选择这个元素的内容”功能(这是纯JS,而不是jQuery)。

答案 3 :(得分:1)

$(function({
$('#days').attr("disabled", true);
});
$("#months").blur(function(){
    if($(this).val()<1 || $(this).val()>12){
       $(this).val() = "error, invalid month";
       $(this).css('color', 'red');
       $(this).focus();
       $('#days').attr("disabled", true);
       return;
    } 
else
{
 $('#days').attr("disabled", false);
}  
    }        
});