2015-02-10 66 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