【发布时间】:2014-04-02 09:40:08
【问题描述】:
我正在调整一个小型 Zend 电子商务网站,最近我们收到了一些机器人输入,他们只是不断填写每个领域的电子邮件地址。这就是为什么我想让我的表单验证检查该字段不是要通过的电子邮件(或者可能只是不包含“@”)。其他想法是有一个无法填写的隐藏字段。我该如何实现呢?因为我发现很难找到一种方法使结果为假以便通过(不是电子邮件)。
目前使用的验证有两种,其中一种是jQuery Validation插件
setupFormValidation : function() {
$('#planOrderForm').validate({
ignore: [],
rules : {
contactPerson:{
required: true,
minlength: 4
},
contactEmail: {
required:true,
email: true
},
contactPhone: 'required',
contactAddress: 'required',
contactZipcode: 'required',
contactCity: 'required'
},
messages : {
contactPerson: {
required: $('#name-message-1').html(),
minlength: $('#name-message-2').html()
},
contactEmail: {
required: $('#email-message-1').html(),
email: $('#email-message-2').html()
},
contactPhone: $('#phone-message').html(),
contactAddress: $('#address-message').html(),
contactZipcode: $('#zip-city-message').html(),
contactCity: $('#zip-city-message').html()
},
errorElement : 'div',
errorPlacement: function(error, element) {
if( element.attr('id')=='contactZipcode'||element.attr('id')=='contactCity'){
console.log(element.parent());
if(element.parent().find('.error-message').length==0){
error.insertAfter('#contactCity');
error.addClass('error-message');
}
} else {
offset = element.offset();
error.insertAfter(element);
error.addClass('error-message');
}
},
submitHandler : function(form) {
form.submit();
}
});
另一种是通过 Zend addElement 函数:
/* email */
$this->addElement('text', 'contactEmail', array(
'label' => 'form_plan_email',
'required' => true,
'trim' => true,
'validators' => array('EmailAddress'),
'maxLength' => 255,
'decorators' => $customElementDecorators
));
首选方法是通过 jQuery 表单验证。
【问题讨论】:
标签: php forms validation zend-framework jquery-validate