我知道您可以使用以下代码忽略标题属性作为表单的错误消息:
$("#myForm").validate({
ignoreTitle:true
});
但是,我想知道这是否可以针对单个字段完成。我问的原因是因为我想让我的一个字段返回包含 HTML 的消息,而不仅仅是字符串消息。
有没有办法有条件地将 HTML 放入title
属性中?
我知道您可以使用以下代码忽略标题属性作为表单的错误消息:
$("#myForm").validate({
ignoreTitle:true
});
但是,我想知道这是否可以针对单个字段完成。我问的原因是因为我想让我的一个字段返回包含 HTML 的消息,而不仅仅是字符串消息。
有没有办法有条件地将 HTML 放入title
属性中?
Quote: 有什么方法可以有条件地将HTML 放在标题属性中?
不,那里没有。messages
但是您可以在该字段的选项中指定自定义消息。
$(document).ready(function(){
$('#myform').validate({
// your other rules and/or options
messages: {
myfieldname: {
myrule: "this is my <b>custom</b> message"
}
}
});
});
(是的,看起来 HTML 是允许的)
工作演示:http: //jsfiddle.net/4KGjD/
messages , Options, Default:所用方法的默认消息
定义自定义消息的键/值对。键是元素的名称,值是要为该元素显示的消息。可以使用包含每个规则的特定消息的另一个映射来代替普通消息。覆盖元素的标题属性或方法的默认消息(按此顺序)。每条消息都可以是字符串或回调。回调在验证器的范围内被调用,规则的参数作为第一个参数,元素作为第二个参数,它必须返回一个字符串以显示为消息。
我意识到在我的情况下,在验证之前删除title
属性并在出现错误时将其添加回来可能更简单。
所以这是我使用的 Javascript 的总体思路:
//BEFORE validation, remove title attribute:
var password=$('#myForm).find('input[type=password]');
var title=password.attr('title');
password.removeAttr('title');
//If there is an error, add back the title attribute
password.attr('title', title);
这是HTML:
<input id="password" title='Password must be at least 8 characters, 1 number, 1 upper and 1 lower case letters' placeholder='At least 8 chars, 1 num, 1 upper'
name="password" type="password" />
<div class='error'>
<ul id='passwordError' style='display:none'>
<li>Password must be at least:</li>
<li> 8 characters </li>
<li> 1 upper, 1 lower case letter</li>
<li> 1 number</li>
</ul>
</div>