动态验证-只需一个附加
Dynamic validating - just one append
我正在尝试快速验证它,并在弹出窗口中显示它#result,但是我不能只添加一次项目。我尝试了e.preventDefault()和e.stopPropagation()-两者都不起作用.html不是一个解决方案,因为我不想在一个div中有两段(或更多)。如何停止?
工作示例
我的html代码:
HTML:
<form name="form" id="form" method="post">
<span> Write pwd: </span>
<input id="login" name="login" type="text" />
</form>
<div id="result" class="tooltip"></div>
和JavaScript:
$(document).ready(function () {
$('#login').keyup(function() {
var th = document.getElementById('login').value;
if (th.length < 6){
$('#result').css('display','inline');
$('#result').append('<p id="too_short">Too short password.</p>');
} else{
$("#too_short").remove();
}
if (th.contains('''') || th.contains(''"') || th.contains('''') || th.contains(''/')){
$('#result').css('display','inline');
$('#result').append('<p id="forb_char">Forbidden characters</p>');
} else{
$("#forb_char").remove();
}
});
});
已修复,请尝试http://jsfiddle.net/amostk/9n2db67u/17/
$(document).ready(function () {
$('#login').keyup(function() {
var th = document.getElementById('login').value;
if (th.length < 6){
$('#result').css('display','inline');
//add a variable to check if #too_sort exist
var ex = $("#too_short").text();
//if it exists, do not append again else add
if(!ex)
{
$('#result').append('<p id="too_short">Too short password.</p>');
//remove #forb_char if exists
$("#forb_char").remove();
}
} else{
$("#too_short").remove();
}
if (th.contains('''') || th.contains(''"') || th.contains('''') || th.contains(''/')){
$('#result').css('display','inline');
//add a varible to check if "#forb_char exists
var en = $("#forb_char").text();
// if exists do not add else add
if(!en)
{
$('#result').append('<p id="forb_char">Forbidden characters</p>');
//remove all #too_short for only one validation
$("#too_short").remove();
}
} else{
$("#forb_char").remove();
}
});
});
-
嗯,你的问题需要什么还不太清楚,但这是我根据我的理解所做的。
-
我更干净地实现了这一点,并修复了行为(我希望这是您所需要的)。
-
只是想添加一些内容。如果您将来需要更复杂的验证或减少代码行,请尝试以下插件,它非常有用且易于使用:http://jqueryvalidation.org/
-
现场演示: http://jsfiddle.net/nwu3ojft/
HTML:
<form name="form" id="form" method="POST">
<span>Write pwd: </span>
<input id="login" name="login" type="text" />
</form>
<div id="result" class="tooltip"></div>
CSS:
指定第一次需要的display
属性,无需每次验证密码时都添加。
div.#result {
display: inline;
}
jQuery:
请阅读代码注释。
// Available error messages
var errorMessage = {
tooShort: 'Too short password',
forbChar: 'Forbidden characters'
};
$(function() {
var login = $('#login');
login.on('keyup', function(e) {
var pwd = this.value,
isValid = isValidPwd(pwd, true);
if (isValid) {
// Clear error message
setMsg('');
}
});
});
/**
* Check if password input is valid
*
* @param {String} value To be checked
* @param {Boolean} showErrors Flag to display errors or not
* @returns {Boolean} isValid
*/
function isValidPwd(value, showErrors) {
var isValid = true,
error;
// Rule #1
if (value && value.length < 6) {
error = '<p>' + errorMessage.tooShort + '</p>';
isValid = false;
}
// Rule #2
if (value && (value.indexOf('''') >= 0 ||
value.indexOf(''"') >= 0 ||
value.indexOf('''') >= 0 ||
value.indexOf(''/') >= 0)) {
error = '<p>' + errorMessage.forbChar + '</p>';
isValid = false;
}
// Check flag
if (showErrors) {
setMsg(error);
}
return isValid;
};
/**
* Used to set a message in the UI
*/
function setMsg(value) {
$('#result').html(value);
};
检查您是否已经使用indexOf()
:添加了警告
if($('#result').text().indexOf("Too short password.")==-1){
if (th.length < 6){
$('#result').css('display','inline');
$('#result').append('<p id="too_short">Too short password.</p>');
}
}else{
$("#too_short").remove();
}
if($('#result').text().indexOf("Forbidden characters")==-1){
if (th.contains('''') || th.contains(''"') || th.contains('''') || th.contains(''/')){
$('#result').css('display','inline');
$('#result').append('<p id="forb_char">Forbidden characters</p>');
}
}else{
$("#forb_char").remove();
}
相关文章:
- 制作一个regex来验证只有一个数字的字符串
- 如何创建一个方法来验证数组的范围
- 聚合物铁形式验证至少选中一个复选框
- 如何通过Primefaces3.5使用JSF2.0验证并在成功的情况下打开一个新的选项卡
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 如何创建只允许用户在选中前一个复选框的情况下选择复选框的复选框验证
- 为什么regex只验证字段中的一个字符,而不是所有输入的字符
- 包括来自另一个页面的Boostrap模态;t验证表单
- 使用javascript验证只有一个特殊字符的字符串
- 正在验证并链接到另一个页面
- 将另一个验证函数附加到 Javascript 表单验证逻辑
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 想要一个验证法国车辆号码格式的功能
- 如何获得下一个验证日?添加天数无效
- 添加& # 39;onblur # 39;到一个验证表单
- 只对一个验证器进行验证
- 如何使用javascript或jquery向html按钮添加另一个验证函数
- 如何使用窗口.Onload函数分配一个验证回调函数