jQuery Validate的表单验证功能倒是强大,但是和我现在做的还是有些区别。
除了要把验证元素放置到form标签里外,我自己有提交的按钮,这样就不能使用submit了。这时,我们使用Validate提供的valid方法,返回值是true和false,表单没有通过验证,也是提交不了的。
- <form id="fProfile" method="post" action="">
- <div class="content">
- <table>
- <tr>
- <td class="field-name field-required">用户名</td>
- <td>
- <input type="text" id="txtLoginName" name="txtLoginName" class="disabled" />
- </td>
- </tr>
- <tr>
- <td class="field-name field-required">昵称</td>
- <td>
- <input type="text" id="txtNickName" name="txtNickName" class="required userName"/>
- </td>
- </tr>
- <tr>
- <td class="field-name field-required">电子邮件</td>
- <td>
- <input type="text" id="txtEmail" name="txtEmail" class="required email"/>
- </td>
- </tr>
- <tr>
- <td class="field-name">生日</td>
- <td>
- <input type="text" id="txtBirthDate" name="txtBirthDate"/>
- </td>
- </tr>
- <tr>
- <td class="field-name">联系电话</td>
- <td>
- <input type="text" id="txtContactPhone" name="txtContactPhone" class="isPhone"/>
- </td>
- </tr>
- <tr>
- <td class="field-name">工作电话</td>
- <td>
- <input type="text" id="txtWorkPhone" name="txtWorkPhone" class="isPhone"/>
- </td>
- </tr>
- <tr>
- <td class="field-name">手机号码</td>
- <td>
- <input type="text" id="txtMobileNo" name="txtMobileNo" class="isMobile"/>
- </td>
- </tr>
- </table>
- </div>
- <div class="button-pane">
- <button id="btnUpdateProfile">保存</button>
- <button>取消</button>
- </div>
- </form>
验证脚本:
- // 验证个人资料修改表单
- $("#fProfile").validate({
- rules: {
- txtNickName: {
- maxlength: 64
- }
- , txtContactPhone: {
- maxlength: 32
- }
- , txtWorkPhone: {
- maxlength: 32
- }
- , txtMobileNo: {
- maxlength: 32
- }
- }
- , messages: {
- txtNickName: {
- maxlength: lmslang.v_NickName_maxlen
- }
- , txtContactPhone: {
- maxlength: lmslang.v_ContactPhone_maxlen
- }
- , txtWorkPhone: {
- maxlength: lmslang.v_WorkPhone_maxlen
- }
- , txtMobileNo: {
- maxlength: lmslang.v_Mobile_maxlen
- }
- }
- });
- $("#btnUpdateProfile").click(function() {
- var b = $("#fProfile").valid();
- if (b) {
- editProfile();
- } else {
- showError(lmslang.formValidate_Error);
- }
- });
ok!这样判断就不会和以前button的事件冲突了。
第二个问题:
Validate的中国化支持:
我们可以使用Validate的API自己进行扩展:
// 字符验证
jQuery.validator.addMethod("userName", function(value, element) {
return this.optional(element) || /^[/u0391-/uFFE5/w]+$/.test(value);
}, "用户名只能包括中文字、英文字母、数字和下划线");
// 手机号码验证
jQuery.validator.addMethod("isMobile", function(value, element) {
var length = value.length;
return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+/d{8})$/.test(value));
}, "请正确填写您的手机号码");
// 电话号码验证
jQuery.validator.addMethod("isPhone", function(value, element) {
var tel = /^(/d{3,4}-?)?/d{7,9}$/g;
return this.optional(element) || (tel.test(value));
}, "请正确填写您的电话号码");
// 邮政编码验证
jQuery.validator.addMethod("isZipCode", function(value, element) {
var tel = /^[0-9]{6}$/;
return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");
参考:
http://docs.jquery.com/Plugins/Validation/valid
插件文档地址: http://www.webreference.com/programming/javascript/jquery/form_validation/index.html
http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage