2013-01-31 17 views
0

我知道你可以忽略的錯誤消息的標題屬性用下面的代碼形式:jQuery驗證單個字段上的插件ignoreTitle?

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

但是,我想知道這是否可以爲單個字段來完成。我問的原因是因爲我想讓我的一個字段返回一個包含HTML的消息,而不僅僅是一個字符串消息。

有什麼方法可以有條件地將HTML放在title屬性中?

+0

什麼是這樣做的目的是什麼?它只是讓你的頁面通過W3C HTML驗證器?你可以展示更多的代碼和jsFiddle演示,以便將來的讀者可以受益? – Sparky

回答

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.

消息選項,默認:默認的消息對於使用的方法

定義自定義消息的鍵/值對。鍵是 元素的名稱,爲要顯示的元素賦值消息。對於每條規則,可以使用 而不是 明文消息,而具有特定消息的另一個映射可以是 。覆蓋元素的標題屬性或該方法的默認消息(按該順序)。每條消息可以是字符串 或回叫。回調在驗證器 的範圍內調用,並且規則的參數作爲第一個參數,而元素作爲第二個參考的 ,它必須返回一個字符串以顯示爲消息。

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> 
+0

比什麼更簡單?這似乎對你想要實現的內容非常冗長。我的回答有什麼問題?如果你要操縱DOM到它一直以來的狀態,爲什麼要這麼做呢?換句話說,自己編寫HTML或使用JavaScript編寫HTML ......在這兩種情況下,您仍然擁有包含HTML實體的title屬性。 – Sparky

+0

嗨@Sparky,我簡化了我的示例以供討論。實際上,我的網站上的所有表單都是一個較大的統一代碼庫的一部分,其中'validate()'包裝在'ajaxSubmit()'等等中。我發現很難弄清楚如何添加自定義以你建議的方式傳遞信息,而不是破壞一切。對於我來說,操縱我的表單提交工作流程的方式對我來說更容易。底線是你的方式很好,是更好的通用解決方案。我只是描述了一個黑客,我不需要炸掉現有的代碼即可快速工作。 –

+0

好吧,我明白了。我認爲如果你的'.validate()'沒有被「包裝」在任何內容中,你可能會有更容易的時間來操縱它。換句話說,'.validate()'應該只在DOM準備就緒時使用你的選項/規則初始化插件_ONCE_等。然後還有其他內置方法可用於進行動態更改,測試有效性,提交與ajax或鉤入其他事件。爲未來的努力思考食物。祝你好運。 – Sparky

相關問題