jQuery Mobile的和不显眼验证
问题描述:
我创建利用自带的MVC3不显眼的验证一个jQuery Mobile (Alpha 3)基于ASP.NET MVC 3应用。当直接访问页面(Url中没有散列)时,验证完美无缺。但是,当您导航到页面时,jQuery Mobile使用Ajax Navigation动态加载它(在Url中显示哈希)并且验证停止工作。jQuery Mobile的和不显眼验证
下面是代码的使用的示例:
型号:
[Required(ErrorMessage = "Missing value")]
[DisplayName("Property Display Name")]
public int? PropertyName { get; set; }
视图(剃刀):
@Html.LabelFor(model => model.PropertyName)
@Html.TextBoxFor(model => model.PropertyName)
@Html.ValidationMessageFor(model => model.PropertyName)
生成的HTML:
<label for="PropertyName">Property Display Name</label>
<input data-val="true" data-val-number="The field Property Display Name must be a number." data-val-required="Missing value" id="PropertyName" name="PropertyName" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="PropertyName" data-valmsg-replace="true"></span>
其他页面以前已加载和HTML元素不再有唯一的ID这是可能的。除了滚动自己的Html Helper类来为Label,TextBox和ValidationMessage生成HTML以外,有什么办法可以处理这种情况?
答
我一直在挣扎了一下这个同样的问题,但@Zote我指出了正确的方向。
parse()
是去了,但要确保在一个选择,即通过方式:
jQuery.validator.unobtrusive.parse("form")
或
jQuery.validator.unobtrusive.parse(document)
挂钩这件事最好的方法可能是通过JQMs pageshow
事件。这则每个新页面过渡之后被触发,就像这样,你可能还喜欢做这个之前JQM做它的页面上魔法以及通过使用pagebeforeshow
事件
$('div').live('pageshow',function(event){
jQuery.validator.unobtrusive.parse(".ui-page-active form");
});
通过使用.ui-page-active
,你将搜索范围缩小至当前活动页面。
我想知道的唯一ID与JQM,它仍然困扰着我。 JQM作者自己并没有多说这些。我甚至看到了一个预设页脚的例子,其中id被复制。我看到了两个解决方案 - 无论是照顾你的ID的自己,或通过强制删除您从DOM离开作为新的一个被加载的页面摧毁JQM缓存 - `pagebeforecreate`事件 – naugtur 2011-02-08 08:16:35
我们遇到类似问题,但避风港”根本没有工作。我们使用jQ 1.5和jQM 1.03a。在这里挣扎.. – pavsaund 2011-02-17 10:16:27