2015-02-10 64 views
0

我試圖爲我的registerform生成一個驗證。我正在使用jQuery驗證。當文本框爲空時,我想讓errormessage顯示爲我的佔位符。當添加文本但仍然會拋出錯誤我想使用自定義設置。jQuery驗證,element.value未定義在錯誤位置

我的問題是調試代碼時:

.validate({ 
    debug: true, 
    errorPlacement: function (error, element) { 
     if (element.value === "") { 
      element.attr("placeholder", error.text()); 
     } 
     else { 
      alert(element.value); 
     } 
    } 
}); 

I'm越來越不確定的elment.value。根據Devtools元素.value是文本框中的文本(在文本框中添加文本時發生更改),但是當我將值看作左側的紅色圓圈時,它也表示它未定義。使用MVC傭工的文本形式

enter image description here

I'm:

@Html.TextBoxFor(m => m.SurName, new { @class = "form-control required", placeholder = "Förnamn", @type = "SurName" }) 

I'm我使用錯誤的值或ATTR?

+0

什麼是@type =「SurName」?這不是一個有效的'type'屬性 – 2015-02-10 07:51:11

+0

SurName來自我的ViewModel,它有一個對應的列。像這樣:[Column(「SurName」)]。這使得自動填充功能可以在瀏覽器中正常工作。 – Nedyt 2015-02-10 08:22:34

+0

[Here](http://www.w3schools.com/tags/att_input_type.asp)是有效'type'屬性的列表 - 或者你的意思是'id =「SurName」'? – 2015-02-10 08:26:30

回答

1

element.valueerrorPlacement

你打破它通過使用value,這是不確定的,而不是此功能的有效參數不確定的。只有errorelement已被定義爲您的errorPlacement函數的兩個參數。相反,使用jQuery val()來獲取元素的值。

errorPlacement: function (error, element) { 
    if (element.val() === "") { 
     element.attr("placeholder", error.text()); 
    } 
    else { 
     // alert(element.val()); // <- Safari fail 
     console.log(element.val()); 
    } 
} 

DEMO:http://jsfiddle.net/atrL0h1s/


但是,我永遠不會使用alert(),因爲你可以使用jQuery多更好看的東西。在這種情況下,使用Safari時,解散alert()會導致新的警報在無限循環中反覆出現。

+0

非常感謝Sparky!我會嘗試將值切換到val()並希望最好。順便說一句,警報箱只是爲了測試,我正在考慮使用烤麪包機來顯示價值。無論如何謝謝你的迴應。我會回到你身邊,讓它知道它是否有效。 – Nedyt 2015-02-11 06:43:21

+0

它就像一個魅力斯帕蒂。再次感謝。 – Nedyt 2015-02-11 09:09:48