Bootstrap-3:使用 jQuery 验证消息输入 Group-Addon STRETCHES
Bootstrap-3: Input Group-Addon STRETCHES with jQuery Validation messages
我正在使用带有 jQuery 验证插件的 Twitter Bootstrap 3,但由于某些原因,当验证错误消息弹出时 STRETCHES 我的 输入Group-Addon框和图标。
正常[未验证]
经过验证
这是我的 Fiddle 如果您想解决问题:My Fiddle
I've tried multiple solutions on the web such as
GitHub Issue of Input Addon and Input Addon issue on Stack
Overflow
But I can't seem to fix the problem, no matter what I try.
请告诉我在出现验证错误时我必须做什么来防止 INPUT GROUP-ADDON 拉伸。谢谢!
我的主要代码如下:
jQuery
$('.login-form').validate ({
// validation rules for registration form
errorClass: "error-class",
validClass: "valid-class",
onError : function(){
$('.input-group.error-class').find('.help-block.form-error').each(function() {
$(this).closest('.form-group').addClass('error-class').append($(this));
});
},
rules: {
username: {
required: true,
minlength: 3,
maxlength: 40
},
password: {
required: true,
minlength: 7,
maxlength: 20
}
},
messages: {
username: {
required: "Please enter your username or email address",
minlength: "Usernames can't be shorter than three characters",
maxlength: "Usernames or emails must be shorter than forty characters."
},
password: {
required: "Please enter your password",
minlength: "Passwords can't be shorter than seven characters",
maxlength: "Passwords must be shorter than forty characters."
},
highlight: function(element, errorClass) {
$(element).removeClass(errorClass);
}
},
submitHandler: function() {
$('#noenter').show();
}
});
HTML
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<form class="login-form" action="login" method="post" action="../PHP/ValidateForm.php">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" style="color:red;" id="myModalLabel">TITLE</h4>
</div>
<div class="modal-body">
<!-- Text input-->
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-2x fa-user"></i></span>
<input required id="username" name="username" placeholder="Username or Email" class="inputfield form-control" type="text">
</div>
</div>
<!-- Text input-->
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-2x fa-lock"></i></span>
<input required id="password" name="password" placeholder="Password" class="form-control" type="password">
</div>
</div>
<div class="error">
</div>
<input title="Log In" name="submit" value="Log In" type="submit" class="loginbtn btn btn-lg btn-block">
</div>
<p class="text-muted"><strong>Need an account? <a href="#">Join </a></strong>
</p>
</div>
</div>
</form>
</div>
CSS
.form-control {
color: #000 !important;
}
form label.error-class {
font: 15px Tahoma, sans-serif;
color: #ED7476;
margin-left: 5px;
position: relative;
}
form input.error-class,
form input.error-class:hover,
form input.error:focus,
form select.error-class,
form textarea.error-class {
background: #FFEDED;
}
.error-class {
color: red;
z-index: 0;
position: relative;
display: inline-block;
}
.valid-class {
color: black;
}
尝试将您的图标移到范围之外:
<div class="input-group">
<i class="fa fa-2x fa-user"></i>
<span class="input-group-addon"></span>
<input required id="username" name="username" placeholder="Username or Email" class="inputfield form-control" type="text">
</div>
我对您的 jQuery 和 Css 文件做了一些改动,现在可以使用了。
jQuery 文件更改。
$('.login-form').validate ({
// validation rules for registration form
errorClass: "error-class",
validClass: "valid-class",
errorElement: 'div',
errorPlacement: function(error, element) {
if(element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
},
onError : function(){
$('.input-group.error-class').find('.help-block.form-error').each(function() {
$(this).closest('.form-group').addClass('error-class').append($(this));
});
},
rules: {
username: {
required: true,
minlength: 3,
maxlength: 40
},
password: {
required: true,
minlength: 7,
maxlength: 20
}
},
messages: {
username: {
required: "Please enter your username or email address",
minlength: "Usernames can't be shorter than three characters",
maxlength: "Usernames or emails must be shorter than forty characters."
},
password: {
required: "Please enter your password",
minlength: "Passwords can't be shorter than seven characters",
maxlength: "Passwords must be shorter than forty characters."
},
highlight: function(element, errorClass) {
$(element).removeClass(errorClass);
}
},
submitHandler: function() {
$('#noenter').show();
}
});
Css 变化。
.error-class {
color:red; z-index:0; position:relative; display:block; text-align: left; }
这适用于我使用 bootstrap 3 中的文本字段(包括或不使用输入组)
我只是搜索父 class .form-group,然后使用 append 在末尾插入错误范围。
$('#form-enroll').validate({
...
errorPlacement: function(error, element) {
$(element).parents('.form-group').append(error)
},
})
用视图和控制台看我的screenshot
我之前遇到了同样的问题并实现了下面的代码...
<script type="text/javascript">
errorPlacement: function (error, element) {
if (element.parent().hasClass('input-group')) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}</script>
查看工作示例的截图
如果您不想弄乱 java 脚本,请将代码放在下方
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-2x fa-user"></i></span>
<input required id="username" name="username" placeholder="Username or
Email" class="inputfield form-control" type="text">
</div>
<label id="username-error" class="error" for="username" style="display: none;"></label>
</div>
我正在使用带有 jQuery 验证插件的 Twitter Bootstrap 3,但由于某些原因,当验证错误消息弹出时 STRETCHES 我的 输入Group-Addon框和图标。
正常[未验证]
经过验证
这是我的 Fiddle 如果您想解决问题:My Fiddle
I've tried multiple solutions on the web such as
GitHub Issue of Input Addon and Input Addon issue on Stack Overflow
But I can't seem to fix the problem, no matter what I try.
请告诉我在出现验证错误时我必须做什么来防止 INPUT GROUP-ADDON 拉伸。谢谢!
我的主要代码如下:
jQuery
$('.login-form').validate ({
// validation rules for registration form
errorClass: "error-class",
validClass: "valid-class",
onError : function(){
$('.input-group.error-class').find('.help-block.form-error').each(function() {
$(this).closest('.form-group').addClass('error-class').append($(this));
});
},
rules: {
username: {
required: true,
minlength: 3,
maxlength: 40
},
password: {
required: true,
minlength: 7,
maxlength: 20
}
},
messages: {
username: {
required: "Please enter your username or email address",
minlength: "Usernames can't be shorter than three characters",
maxlength: "Usernames or emails must be shorter than forty characters."
},
password: {
required: "Please enter your password",
minlength: "Passwords can't be shorter than seven characters",
maxlength: "Passwords must be shorter than forty characters."
},
highlight: function(element, errorClass) {
$(element).removeClass(errorClass);
}
},
submitHandler: function() {
$('#noenter').show();
}
});
HTML
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<form class="login-form" action="login" method="post" action="../PHP/ValidateForm.php">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" style="color:red;" id="myModalLabel">TITLE</h4>
</div>
<div class="modal-body">
<!-- Text input-->
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-2x fa-user"></i></span>
<input required id="username" name="username" placeholder="Username or Email" class="inputfield form-control" type="text">
</div>
</div>
<!-- Text input-->
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-2x fa-lock"></i></span>
<input required id="password" name="password" placeholder="Password" class="form-control" type="password">
</div>
</div>
<div class="error">
</div>
<input title="Log In" name="submit" value="Log In" type="submit" class="loginbtn btn btn-lg btn-block">
</div>
<p class="text-muted"><strong>Need an account? <a href="#">Join </a></strong>
</p>
</div>
</div>
</form>
</div>
CSS
.form-control {
color: #000 !important;
}
form label.error-class {
font: 15px Tahoma, sans-serif;
color: #ED7476;
margin-left: 5px;
position: relative;
}
form input.error-class,
form input.error-class:hover,
form input.error:focus,
form select.error-class,
form textarea.error-class {
background: #FFEDED;
}
.error-class {
color: red;
z-index: 0;
position: relative;
display: inline-block;
}
.valid-class {
color: black;
}
尝试将您的图标移到范围之外:
<div class="input-group">
<i class="fa fa-2x fa-user"></i>
<span class="input-group-addon"></span>
<input required id="username" name="username" placeholder="Username or Email" class="inputfield form-control" type="text">
</div>
我对您的 jQuery 和 Css 文件做了一些改动,现在可以使用了。
jQuery 文件更改。
$('.login-form').validate ({
// validation rules for registration form
errorClass: "error-class",
validClass: "valid-class",
errorElement: 'div',
errorPlacement: function(error, element) {
if(element.parent('.input-group').length) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
},
onError : function(){
$('.input-group.error-class').find('.help-block.form-error').each(function() {
$(this).closest('.form-group').addClass('error-class').append($(this));
});
},
rules: {
username: {
required: true,
minlength: 3,
maxlength: 40
},
password: {
required: true,
minlength: 7,
maxlength: 20
}
},
messages: {
username: {
required: "Please enter your username or email address",
minlength: "Usernames can't be shorter than three characters",
maxlength: "Usernames or emails must be shorter than forty characters."
},
password: {
required: "Please enter your password",
minlength: "Passwords can't be shorter than seven characters",
maxlength: "Passwords must be shorter than forty characters."
},
highlight: function(element, errorClass) {
$(element).removeClass(errorClass);
}
},
submitHandler: function() {
$('#noenter').show();
}
});
Css 变化。
.error-class {
color:red; z-index:0; position:relative; display:block; text-align: left; }
这适用于我使用 bootstrap 3 中的文本字段(包括或不使用输入组)
我只是搜索父 class .form-group,然后使用 append 在末尾插入错误范围。
$('#form-enroll').validate({
...
errorPlacement: function(error, element) {
$(element).parents('.form-group').append(error)
},
})
用视图和控制台看我的screenshot
我之前遇到了同样的问题并实现了下面的代码...
<script type="text/javascript">
errorPlacement: function (error, element) {
if (element.parent().hasClass('input-group')) {
error.insertAfter(element.parent());
} else {
error.insertAfter(element);
}
}</script>
查看工作示例的截图
如果您不想弄乱 java 脚本,请将代码放在下方
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-2x fa-user"></i></span>
<input required id="username" name="username" placeholder="Username or
Email" class="inputfield form-control" type="text">
</div>
<label id="username-error" class="error" for="username" style="display: none;"></label>
</div>