表格验证

时间:2011-08-15 06:09:46

标签: php javascript jquery jquery-validate

我想验证我的注册表单,但我有每个文本输入的默认值。用jquery validate插件尝试了所有可能的方法。很难理解如何使用它(我是js的新手)我想做的是忽略默认值并验证表单。我的表单看起来像那样

<from id="reg">
<input class="part1 default" type="text" name="fname" id="fname" value="Adınız (First Name)"/>
<input  class="part1 default"  type="text" name="mname"  value="Atanızın adı (Middle name)"/>
</form>

我正在使用这段代码

var defaultValues = {
    'fname': 'Adınız',
    'mname': 'Atanızın adı',
    'lname': 'Soyadınız',
    'phone': 'Telefon',
    'email': 'Email',
    'pwd':'Şifrə',
    'region':'Rayon',
    'school':'Məktəb',
    'login':'Istifadəçi adı',
    'class':'Sinif',
    'subject':'Fənnin adını daxil edin',
    'dob': 'Date of Birth'
};
$('input').live('focus', function() {
    var el = $(this);
    if (el.hasClass('default')) {
        el.removeClass('default').val('');
    }
    if (el.attr('id') === 'dob') {
        $(this).mask('99.99.9999', {placeholder:' '});
    }
});

$('input').live('blur', function() {
    var el = $(this);
    var name = el.attr('name');

    // Really we only want to do anything if the field is *empty*
    if (el.val().match(/^[\s\.]*$/)) {

        // To get our default style back, we'll re-add the classname
        el.addClass('default');

        // Unmask the 'dob' field
        if (name == 'dob') {
            el.unmask();
        }

        // And finally repopulate the field with its default value
        el.val(defaultValues[name]);
    }
});

/*validation*/
 $('#reg').submit(function (event) 
    {
        if ($('#fname').val() == defaultValues['Adınız'] || $.trim($('#pwd').val()) == '')
        {
            alert('Please enter the name!');
            return false;
        }
        else
        {
            if ($('#fname').val().length < 2)
            {
                alert('The name must be >2 letters!');
                return false;
            }
        }
    });

您看到的最后一部分是验证。我有一个关于它的问题

  1. 让我们说我们为所有可能的情况写了if。如果还好吧 我们想继续提交流程吗?我是否需要写新的if 对于它,如果用“return true?”结束这个。
  2. 我使用了这段代码,但它总是给我同样的错误 消息“请输入密码!”即使所有输入字段都是 填充。我们如何修改此代码以警告错误数组? 例如,如果我的传递是错误的类型和名称字段未填充脚本将 一次显示2个错误。我也考虑过逻辑:例如每一个 某些情况为真的时候,它会推送数组错误 消息,当它完成检查所有情况时,显示错误 阵列。但无法实现它。 如何验证电子邮件字段和出生日期字段(看起来像“19.16.2010”)?

2 个答案:

答案 0 :(得分:2)

不是将默认值放在“value”属性中,为什么不将其设置为“占位符”。

<input type="text" name="fname" id="fname" placeholder="Adınız (First Name)"/>

然后你可以做定期验证......

答案 1 :(得分:1)

  

如果还好,我们想继续提交流程怎么办?我是否需要为它写新的东西,如果用“return true?”结束这个?

是。 return true;

  

我使用了这段代码,但它总是给我相同的错误消息“请输入密码!”即使填写了所有输入字段。我们如何修改此代码以警告错误数组?例如,如果我的传递类型错误且名称字段未填充,则脚本将一次显示2个错误。

您需要先收集所有错误,然后显示包含所有错误的消息,例如使用像数组一样的复合数据结构。

  

我也考虑过逻辑:例如,每当某些情况属实时,它会推送数组错误消息,当它完成检查所有情况时,显示错误数组。但无法实现它。如何验证电子邮件字段和出生日期字段(看起来像“19.16.2010”)?

您需要为每种类型的数据提供验证例程。然后,您可以为包含该数据类型的每个字段调用相应函数:

form element -> data-type -> validation function

也许你应该只使用jquery验证插件来避免麻烦?我认为你不是第一个遇到这个问题的人,所以值得深入研究。