在验证之前清理jQuery验证插件数据
Sanitize jQuery validation plugin data prior to validation
是的,我知道数据卫生和验证必须在服务器端完成,但是请听我说。
使用下面的脚本,由于没有给出协议,stackoverflow.com
将验证失败。如果输入的URL没有协议,我希望在客户端验证之前向输入值添加默认协议(http://))。我不希望放松验证方法以静默地接受没有协议的url,因为用户应该知道添加了协议。
这是如何最好地完成?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Testing</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var validator=$("#myForm").validate({
rules: {
url: {url:true,}
},
});
//Added per Monax's suggestion.
$('#url').blur(function(){this.value=this.value.substring(0,4)=='http'?this.value:(this.value?'http://'+this.value:'');});;
});
</script>
</head>
<body>
<form id="myForm" method="post">
<input name="url" id="url" value="">
<input type="submit" />
</form>
<?php echo('<pre>'.print_r($_POST,1).'</pre>');?>
</body>
</html>
您不想编写自定义规则,并且坚持在验证之前操作数据。你的选择是有限的,因为插件会自动捕获所有的验证触发事件。这是我建议的解决方法。
-
创建两个输入字段…
- 一个可见的用户(没有验证)
- 一个隐藏用于验证。
-
在输入任何数据到可见字段时,您可以通过编程将数据复制并根据需要修改到隐藏字段。
-
然后以编程方式触发对隐藏字段的验证
就像这样。
HTML:<input type="text" id="url" />
<input type="hidden" name="url" />
jQuery: $('#url').on('blur keyup', function() {
var myurl = $(this).val(); // entered value
// manipulate and sanitize the value as desired
$('[name="url"]').val() = newvalue; // copy the new value into the hidden field.
$('[name="url"]').valid(); // trigger validation on the hidden field
});
指出:
你必须通过正确设置
ignore
选项来启用隐藏字段的验证。[]
将启用对所有隐藏字段的验证您可能必须使用
errorPlacement
选项来调整这个隐藏字段的错误消息的位置。
相关文章:
- 验证jquery中的数字
- 在发送之前验证jQuery或Javascript中的URL
- 提交/验证Jquery
- 验证 jQuery 中带有一个小数位的负数
- 如何验证 jquery cookie .js兼容性
- 验证 JQuery 中是否存在 URL
- 电子邮件验证 jquery
- 选择.js并验证 jquery
- 验证 jquery 评级星
- 如何为这些要求创建 URL 验证 jQuery
- 时间选择器验证?JQuery/Javascript
- 删除最近的下拉列表并验证Jquery中的下拉列表
- 验证jquery函数的问题
- 电子邮件验证Jquery不起作用
- 如何验证jquery函数中的输入字段
- 表单验证——jQuery验证是否足够,以及如何在PHP中巧妙地验证数据
- 当其他浏览器验证时,是什么导致I.E.不验证(jquery) ?
- 提交表单与ajax验证jquery /标准javascript
- 如何验证jquery中的表单
- 尝试验证jQuery UI日期选择器