我们有一个包含名字和姓氏字段的表单.我被要求允许下划线.我不知道任何使用下划线的sql注入,但我也不知道有人在他们的名字中有下划线.是否有充分的理由允许或不允许名称中的下划线?
编辑:我正在使用参数和服务器端验证.这是通过jQuery验证插件进行客户端验证.
编辑2:我不是故意要讨论我是否应该进行任何验证......我只是想知道是否有任何令人信服的理由接受下划线,比如我应该接受爱尔兰人或连字符.基于此,我接受了奥伦的回答.
我请求ASP.net MVC视图到现场框和视图中包含已标记了属性的表单字段由JQuery的不显眼的验证插件使用.
客户端脚本不工作然而,我的理论是,因为它的验证框架只被上早已由MVC视图已经被加载到现场箱的时间通过网页加载触发.
那么我怎样才能让验证框架知道它有新的表单字段来修复?
干杯,伊恩.
我有以下表格
<form id="myform" method="post" action="#">
<div class="fields">
<fieldset class="ui-widget ui-widget-content ui-corner-all">
<legend class="ui-widget ui-widget-header ui-corner-all"> Customer properties </legend>
<input type="hidden" id="CustomerID" name="CustomerID" value="${CustomerID}" />
<br />
<table width="100%" border="0" cellpadding="3" cellspacing="1">
<tr valign="top">
<td><label for="Code">Customer Code</label></td>
<td><input type="text" id="Code" name="Code" value="${Code}" class="ui-widget-content" style="width:140px" /></td>
</tr>
<tr valign="top">
<td><label for="CustomerName">Name</label></td>
<td><textarea id="CustomerName" rows="2" cols="40" name="CustomerName" class="ui-widget-content">${CustomerName}</textarea></td>
</tr>
...
</table>
<br />
</fieldset>
</div>
<div style="text-align:right; padding: 8px 0px 0px 0px;">
<input type="submit" id="btnSave" name="btnSave" class="button" value="Save" />
<input type="button" id="btnCancel" name="btnCancel" class="button" value="Cancel" …
Run Code Online (Sandbox Code Playgroud) 是否可以将数据属性用于JQuery Validate插件.我目前使用的是类名,例如
class="{required:true, messages:{required:'You must choose a site.'}}"`
Run Code Online (Sandbox Code Playgroud)
但需要使用数据属性,例如
data-validate="{required:true, messages:{required:'You must choose a site.'}}"`
Run Code Online (Sandbox Code Playgroud)
输入可能具有多个与其关联的数据属性,这与验证无关,例如
<input name="txt_txt001" type="text" maxlength="30" id="txt_txt001" class= "
{required:true, messages:{required:'This field is required.'} }" data-
children="ddl_txt007,ddl_txt008" data-optionGroup="1" data-optionGroupParent="" />
Run Code Online (Sandbox Code Playgroud)
我知道ketchup插件提供了这个,但不想转移到它,因为我已经把大量工作用于使用JQuery Validate进行页面设置.
谢谢
我正在为一个页面的新布局工作,这是一个基于向导的客户订购系统.他们订购材料组但这些材料可以在订购过程中组合在一起,这样他们就可以按照红色,蓝色和/或绿色的任意组合订购10个小工具.字段的总和不能超过预先计算的最大值.大多数材料是每组简单的单一选择.
我已经在其他页面中使用了jQuery validate,并且我使用了addClassRules方法来验证页面上的所有输入元素,并且它运行得很好.我正在处理的当前示例令我感到困惑,因为它只会在表单提交时捕获第一个验证失败,但在提交之后它通常会捕获其他的,但从来没有完整的验证失败列表.
这是我的jsfiddle样本,所以你可以看到我在一起的东西:http://jsfiddle.net/brianmat/2nV5u/
我使用了一个错误计数代码段,该代码片段在多个站点上都没有问题.在这个例子中,即使所有7个文本框都留空,我也只得到1个错误.
我唯一的主要区别是我正在做一个rowpan来分组我的项目,但我看不出那会是一个问题.我知道这最终会变得非常简单,但我现在只是碰壁了.
jQuery验证代码没什么特别的:
$.validator.addClassRules({
NumericInput: {
required: true
}
});
$("#theForm").validate({
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1 ? 'You missed 1 field. It has been highlighted below' : 'You missed ' + errors + ' fields. They have been highlighted below';
$("div.error span").html(message);
$("div.error").show();
} else {
$("div.error").hide();
}
},
errorPlacement: function(error, element) {},
submitHandler: function(form) {
$("div.error").hide();
form.submit();
}
});
Run Code Online (Sandbox Code Playgroud)
其余代码只处理小计和仅数字数据输入. …
我想在Twitter Bootstrap typeahead的文本输入字段上进行验证.所以我尝试按如下方式实现它.名称字段上的验证正常工作.如果你开始输入它并再次清除该字段,验证就会启动.但是在位置字段data-provide="typeahead"
上,它就不会发生.但是,当您单击"提交"按钮时,确认会启动.
我试过调试它,但据我所知,Bootstrap和jQuery Validate都正确地注册了它们的事件处理程序.更奇怪的是,在验证之前安装了typeahead.所以人们会期望打破先行.但它不是......
index.html的:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.1.0/css/bootstrap-combined.min.css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.1.0/js/bootstrap.js"></script>
<script type="text/javascript">
$(function() {
$('[data-provide="typeahead"]').each(function() {
var url = $(this).attr('data-url');
$(this).typeahead({
source : function(query, process) {
return $.get(url, {
name : query
}, function(data) {
var json = JSON.parse(data);
return process(json.locations);
});
},
items : 5
});
});
$('#settings-form').validate({
rules: {
name: {
required: true
},
location: {
required: true
}
},
highlight: …
Run Code Online (Sandbox Code Playgroud) 我遇到了jquery验证器验证电话号码的问题.因此,在我有电话号码输入的表单中,我使用jquery的其他方法来验证电话.这是代码:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>stuff/title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/additional-methods.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(e) {
var val = $('#everything').validate({
onkeyup: false,
errorClass: "req_mess",
ignore: ":hidden",
rules: {
phone: {
required: true,
minlength: 10,
phoneUS: true
}
},
messages: {
phone: {
required: "Please enter your phone number",
phoneUS: "Please enter a valid phone number: (e.g. 19999999999 or 9999999999)"
}
}
});
});
</script>
<form name="everything" id="everything" action="Private/Insert.php" method="post" style="display:none;" >
Phone …
Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery validate插件来验证表单.所有字段都是必填字段,并且错误消息的空间在表单上受到限制,因此如果我的规则中的任何字段未完成,则可以显示单个错误消息,其中说:"所有字段必须在您提交之前完成形式'?
我的jQuery知识是有限的,我只能从示例中找到如何设置它,以便它使用以下代码为每个字段输出单独的错误消息:
$(".contact-form").validate({
errorLabelContainer: ".form-errors",
wrapper: "li",
ignore: ".ignore",
errorElement: "em",
rules: {
first_name: { required: true },
last_name: { required: true },
email: { required: true, email: true }
},
messages: {
first_name: "Please enter your first name",
last_name: "Please enter your last name",
email: { required: "Please enter your email address", email: "Your email address must be in the format of name@domain.com" }
},
});
Run Code Online (Sandbox Code Playgroud) 我已经使用jQuery验证为我的表单设置了验证.不幸的是,在$("#clientConfigurationForm").valid()
用户启用/禁用复选框时,我想调用某些点来强制重新评估.我希望当它们被禁用并被.valid()
调用时,忽略当前无效的输入表单(并失去验证状态).目前这没有发生.我怎样才能让它发挥作用?
复选框事件
$("#clientConfigurationForm").on("change","input[type=checkbox]",function(){
$(this)
.closest("div")
.find("input, select")
.not(this)
.not(":submit")
.prop("disabled", !$(this).prop("checked"))
.each(function(){
$(this).valid();
});
});
Run Code Online (Sandbox Code Playgroud)
验证码
$("#clientConfigurationForm").validate({
onkeyup: function (element) {
$(element).valid();
},
focusInvalid: false,
invalidHandler: function(form, validator) {
if (!validator.numberOfInvalids())
return;
// Find out what my ID is
var formIndex = $(validator.errorList[0].element).prop("id").replace(/[A-Za-z]+/g, '');
$("#clientSettingsLinks a").eq(formIndex).trigger("click");
},
errorPlacement: function (error, element) {
var parent = $(element).parent();
var validationContainer = parent.find(".validationResult");
if (validationContainer.length == 0){
validationContainer = $('<span class="validationResult"><i class="'+errorIconClass+' inputValidationIcon"></i></span>');
parent.append(validationContainer);
}
validationContainer.addClass("tooltip").attr("title", error.text());
},
highlight: …
Run Code Online (Sandbox Code Playgroud) 我已经查看了很多这方面的帖子,并且在我添加以下内容时确实调整了我的字段.
$.validator.setDefaults({
ignore: []
});
Run Code Online (Sandbox Code Playgroud)
我仍然缺少的部分是添加input-validation-error
类来通知用户.它适用于我的其他输入元素(非剑道).我已经尝试手动添加类,$.validator.setDefaults
但似乎没有任何工作.
那里有没有一个例子,或者有人让它工作?
我不确定我做得对,但这是我试图手动添加的.
$.validator.setDefaults({
ignore: [],
errorClass: "input-validation-error",
errorElement: "input",
highlight: function (element, errorClass) {
$(element).addClass(errorClass)
},
unhighlight: function (element, errorClass) {
$(element).removeClass(errorClass)
}
});
Run Code Online (Sandbox Code Playgroud) jquery-validate ×10
jquery ×6
validation ×2
forms ×1
html ×1
javascript ×1
kendo-ui ×1
typeahead ×1
whitelist ×1