[英]Adding styling to non-input elements during jquery validation
我正在使用Jquery验证和Tag-it插件,该插件会为要添加的每个新标签动态生成UL LI。 如果没有标签,则插件只有一个LI,并且为空。 如果您创建至少一个标签,那么插件将创建第二个LI。 我仅使用1个以上的LI来使用SubmitHandler和invalidHandler进行验证,这意味着至少有一个标签。 这可行。 这是我的小提琴: http : //jsfiddle.net/Z3HDh/95/
我需要另外两点帮助:
当表单由于未输入标签而无法通过验证时,它将写入控制台-“您没有任何标签”。 它还显示一条消息,“添加一些标签,puhleeeease!” 我希望它向ul class =“ tagit ui-widget ui-widget-content ui-corner-all”的背景和边框添加错误样式。 我尝试使用jquery验证的Highlight和addrules函数未成功。
如果该字段未能通过验证(没有标签,则显示“添加一些标签,puhleeeease!”消息),然后我放入一个标签(这意味着该字段现在已验证),它将仅注册验证并删除错误消息,如果我再次单击提交。 在其他领域,插件本身可以即时验证并调整样式。 因此,在这种情况下,我一旦添加标签,就希望该字段成功验证并删除错误样式和消息,而不是等到我重新提交它。 我已经看到了许多这样的示例,但是也没有实现它。
HTML:
<div class="form-group">
<label for="id_title">Add your title here (required)</label>
<input type="text" id="id_title" name="title" maxlength="75" value=""
required data-msg="Please add a title.">
</div><!-- end form-group -->
<div class="form-group">
<label for="id_material">Your tags go here... (required)</label>
<input type="text" id="id_material" name="material" value=""
required data-msg="Add some tags, puhleeeease!">
</div>
<div class="form-group-buttons">
<p class="form_buttons">
<a href="<?php echo $this->cancel_link . $this->item_type; ?>s" class="dgrey-button cancel-button">Cancel</a>
<button type="submit">Submit</button>
</p>
</div><!-- end form-group-buttons -->
</form>
JS:
$("#id_material").tagit();
$("#add_idea_form").validate({
ignore: "input[name='tags']:hidden",
submitHandler: function (form) {
},
invalidHandler: function(event, validator) {
if($('#id_material + ul').length < 2){
console.log("You don't have any tags");
// return false;
}
}
});
$("li.email > input").rules("add", {
required: true,
email: true
});
CSS:
input.error, td.field input.error, td.field select.error, tr.errorRow td.field, input, tr.errorRow td.field select {
/*background-color: #ffffd5;*/
border:2px solid #d17877;
background: #F2DEDE;
box-shadow: none;
}
#add_idea_form label.error{
color: red;
}
输入标签时,您需要添加删除规则。 下面的示例将在添加标签时(运行错误后)删除“请添加标签”。
$("#id_material").tagit({
afterTagAdded: function(event, ui) {
$("#id_material-error").remove();
$(".ui-corner-all").removeClass('error');
console.log(ui.tag);
}
});
要在标签区域周围添加CSS,请将以下代码添加到无效的处理程序中
invalidHandler: function(event, validator) {
if($('#id_material + ul').length < 2){
console.log("You don't have any tags");
$('.ui-corner-all').addClass('error');
}
}
});
它将在标签输入框中添加一个红色轮廓。 如果您有多个标签输入框,则可能需要更新代码以针对特定输入。
您还需要将以下内容添加到CSS文件中
.error{
border:2px solid #d17877;
background: #F2DEDE;
box-shadow: none;
}
.ui-corner-all.error{
background:red;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.