jQuery在单个字段上验证插件ignoreTitle?

时间:2013-01-31 15:35:43

标签: jquery html jquery-validate

我知道您可以使用以下代码忽略标题属性作为表单的错误消息:

$("#myForm").validate({
  ignoreTitle:true
});

但是,我想知道是否可以针对单个字段进行此操作。我问的原因是因为我想让我的一个字段返回一条包含HTML而不仅仅是字符串消息的消息。

有没有办法有条件地将HTML放在title属性中?

2 个答案:

答案 0 :(得分:1)

  

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/

See documentation.

  

消息选项,默认:使用方法的默认消息

     

定义自定义消息的键/值对。 Key是一个名字   element,为要为该元素显示的消息赋值。代替   普通消息可以是另一个具有特定消息的映射   用过的。覆盖元素的title属性或默认值   方法的消息(按此顺序)。每条消息都可以是一个字符串   或者回调。回调在验证程序的范围内调用   并将规则的参数作为第一个,将元素作为   第二个问题,它必须返回一个String来显示为消息。

答案 1 :(得分:0)

我意识到在我的情况下可能更简单只是在验证之前删除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>