所以我有一个相当大的形式有两个不同的部分.两个部分都以隐藏的方式开始:
<fieldset class="section1" style="display:none">
//...input fields
</fieldset>
<fieldset class="section2" style="display:none">
//...input fields
</fieldset>
Run Code Online (Sandbox Code Playgroud)
根据用户选择的单选按钮显示这些部分.这一切都很有效,直到我进行验证.我怎样才能使用jQuery/Validation插件验证表单,但是它只验证显示的部分?
注意:还有其他部分始终显示,所以我宁愿没有两个单独的表单.
我们喜欢jQuery验证,并且真的想继续使用它.
但是,其中一个最有用的功能是能够验证客户端的电子邮件地址...但它使用的正则表达式接受以"."结尾的电子邮件,我不相信这是有效的,当然不是我们的后端系统喜欢它.
我想知道是否有人知道为什么选择这个特殊的正则表达式或者它是否是一个bug?
问题中的jquery.validate-1.8.1代码:
// http://docs.jquery.com/Plugins/Validation/Methods/email
email: function(value, element) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
},
Run Code Online (Sandbox Code Playgroud) 所有,我正在尝试使用jQuery Form Validator(http://docs.jquery.com/Plugins/Validation).但是,我希望能够单击链接进行验证,然后在一切正常的情况下提交表单.有谁知道如何做到这一点?任何提示或建议将不胜感激.
谢谢!
如果我有一组特殊字符,如:!@#$%^&*(){}[]<>?/|-我怎样才能检查字符串(或字段值)中是否存在任何这些字符?尝试添加一个方法jQuery验证器插件,如果存在任何字段,它将拒绝该字段.我意识到这要求很多,正则表达式只是在杀我.
我有这个代码
剃刀页面:
<div class="editor-label">
@Html.LabelFor(model => model.Citizenship)
</div>
<div class="editor-field">
@Html.EnumDropDownListFor(model => model.Citizenship)
@Html.ValidationMessageFor(model => model.Citizenship)
</div>
Run Code Online (Sandbox Code Playgroud)
模型:
[DisplayName("???????????")]
[Required(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "Required")]
public CitizenshipEnum? Citizenship { get; set; }
Run Code Online (Sandbox Code Playgroud)
最后我得到了这个HTML:
<select data-val="true" data-val-required="??????????, ??????? ????????" id="Citizenship" name="Citizenship"><option value=""></option>
<option value="RF">?????????? ?????????</option>
<option value="other">?????? ???????????</option>
</select>
Run Code Online (Sandbox Code Playgroud)
验证有什么问题吗?确实加载了unobtrusive.js和其他必需的脚本(其他输入验证正常工作)
我正在尝试通过添加自定义规则来解决此问题
像这样,但是不起作用:
$(function () {
$.validator.addMethod('selectNone', function (value, element) { debugger; return $(element).val(); }, "Please select an option");
$("form").validate({
rules: {
'#Citizenship': {
selectNone: true
}
}
});
};
Run Code Online (Sandbox Code Playgroud) 是否有可能通过通配符添加规则?我认为设置这样的规则是不可能的......
$("#form").validate({
// errorLabelContainer: $("div#error"),
errorElement: "p",
errorClass: "form-error",
rules: {
$("input[name*='x.child']"): {
required: true,
minlength: 5
}
}
});
Run Code Online (Sandbox Code Playgroud) 需要从文本来自CMS的范围中复制自定义错误消息文本.基本上需要显示自定义本地化错误消息.
提交表单时代码有效,但只要您单击外部,默认消息就会替换自定义消息.
HTML
<form name="form-core" id="form-core" method="post" action="" role="search" novalidate="novalidate">
<label for="keywords">Hello</label>
<input type="text" id="keyword" name="keyword" class="required" />
<span class="error-message-required">Ce champ est obligatoire</span>
<input type="submit" /><input class="cancel" type="submit" value="Reset" />
</form>
Run Code Online (Sandbox Code Playgroud)
JS
$('#form-core').validate({
debug: false,
onfocusout: function (element) { jQuery(element).valid() },
errorElement: "div",
errorPlacement: function (error, element) {
jQuery('div[for=' + error.attr('for') + ']').remove();
error.text($(element).next('.error-message-required').text());
error.insertBefore(element);
}
});
Run Code Online (Sandbox Code Playgroud) 我试图使用Jquery进行表单验证,遗憾的是我既不能显示空字段空消息也不能阻止用户将字段留空.
我使用以下查询进行验证
$("#frm").validate( {
rules : {
empName : "required"
}
});
Run Code Online (Sandbox Code Playgroud)
我在这里使用JSFiddle进行了演示
任何帮助都非常值得赞赏
我承认,就正则表达而言,我是一个完全的菜鸟.我正在尝试为jquery validate插件编写自定义验证方法.我正在尝试检查输入中是否至少包含1个数字和1个字母.
这是我目前提出的,但它不起作用.非常感谢一些帮助.
jQuery.validator.addMethod("ContainsAtLeastOneDigit", function (value) {
return /^[a-z]+[0-9]/i.test(value);
}, 'Your input must contain at least 1 letter and 1 number');
Run Code Online (Sandbox Code Playgroud)
谢谢.
我无法弄清楚如何使验证插件验证我在表单中动态创建的输入字段.是的,我一直在搜索,到目前为止我找不到任何解决我问题的答案.所以这就是我的要求.
Demo:http://jsfiddle.net/MGbWx/
我想要做的是在第一行中要求物品价格.新克隆的行应该只在其他三个输入字段之一中有输入时才需要项目价格.
我尝试了以下内容.
var itemPropSelector = 'input[name="sku[]"], input[name="itemVariant[]"], input[name="itemQuant[]"]';
$('#item-prop-wrapper').on('keyup', itemPropSelector, function () {
$(this).closest('.item-prop-body').find('.item-price-input').rules('add', {
required: true
});
});
Run Code Online (Sandbox Code Playgroud)
但它并不像我期望的那样有效.几个小时我一直在努力...
谁可以帮我这个事?我很感激!!