Peter Blum 验证器未在 JQuery 步向导内部触发
Peter Blum validators not firing inside of JQuery Steps wizard
我正在使用 JQuery 步骤在 WebForms 项目中设置向导,并使用 Peter Blum 的 VAM 验证器来确保输入正确。这是我流程第一步的示例:
<div id="wizard">
<h1>Step 1</h1>
<div id="stepToAccount">
<p class="sectionHeader">
<asp:Label id="DropdownLabel" runat="server"/>
</p>
<asp:DropDownList id="Dropdown" CssClass="indent50" runat="server"/>
<br/>
<vam:RequiredListValidator runat="server" ID="DropdownIsRequired" Group="StepOne" ControlIDToEvaluate="Dropdown" UnassignedIndex="0" ErrorMessageLookupID="DropdownRequired.Error" SummaryErrorMessageLookupID="DropdownRequired.Error"/>
</div>
所有这些在 div 我用来指定我用来指定向导 (<div id="wizard">
) 之外工作 100% 正常,但在向导 div。单击下拉列表不会使其立即按预期进行验证,如果我使用 window.DES_ValidateGroup("StepOne")
手动调用验证,它会正确地 return 该步骤有问题(步骤图块变为红色),但它不会显示与验证器一起出现的错误消息。
深入了解这是为什么,VAM 验证器发出的 <span>
标签似乎有一个内联 visibility
标签,可以防止它们被隐藏,然后 VAM 的 javascript在需要时删除并重新应用(例如,当验证器失败时,然后再次成功时)。当向导 div.
中的验证失败时,visibility
标记未被正确删除
有人知道为什么会这样吗?我该如何解决?
编辑:供参考,这是发出的代码:
<div id="wizard">
<h1>Step 1</h1>
<div id="StepOne">
<p class="sectionHeader">
<span id="DropdownLabel">Which account would you like to pay to?</span>
</p>
<select name="Dropdown" id="SelectToAccountDropdown" class="indent50">
<option selected="selected" value="0">-- Option One -- </option>
<option value="1">Option Two</option>
</select>
<span class="indent50">
<span style='visibility:hidden' class='VAMErrorText' id='DropdownIsRequired'>
<span id='DropdownIsRequired_Txt'>Please select a thing.</span>
</span>
</span>
</div>
问题是 JQuery Steps 在其呈现方法期间将事件侦听器从 DOM 中剥离,这会禁用 Peter Blum 验证器所依赖的侦听器来完成他们的工作.请参阅 this question 中 Kaish 的回答;用他在那里使用的方法替换 JQuery 步骤 render()
方法解决了我的问题。
我正在使用 JQuery 步骤在 WebForms 项目中设置向导,并使用 Peter Blum 的 VAM 验证器来确保输入正确。这是我流程第一步的示例:
<div id="wizard">
<h1>Step 1</h1>
<div id="stepToAccount">
<p class="sectionHeader">
<asp:Label id="DropdownLabel" runat="server"/>
</p>
<asp:DropDownList id="Dropdown" CssClass="indent50" runat="server"/>
<br/>
<vam:RequiredListValidator runat="server" ID="DropdownIsRequired" Group="StepOne" ControlIDToEvaluate="Dropdown" UnassignedIndex="0" ErrorMessageLookupID="DropdownRequired.Error" SummaryErrorMessageLookupID="DropdownRequired.Error"/>
</div>
所有这些在 div 我用来指定我用来指定向导 (<div id="wizard">
) 之外工作 100% 正常,但在向导 div。单击下拉列表不会使其立即按预期进行验证,如果我使用 window.DES_ValidateGroup("StepOne")
手动调用验证,它会正确地 return 该步骤有问题(步骤图块变为红色),但它不会显示与验证器一起出现的错误消息。
深入了解这是为什么,VAM 验证器发出的 <span>
标签似乎有一个内联 visibility
标签,可以防止它们被隐藏,然后 VAM 的 javascript在需要时删除并重新应用(例如,当验证器失败时,然后再次成功时)。当向导 div.
visibility
标记未被正确删除
有人知道为什么会这样吗?我该如何解决?
编辑:供参考,这是发出的代码:
<div id="wizard">
<h1>Step 1</h1>
<div id="StepOne">
<p class="sectionHeader">
<span id="DropdownLabel">Which account would you like to pay to?</span>
</p>
<select name="Dropdown" id="SelectToAccountDropdown" class="indent50">
<option selected="selected" value="0">-- Option One -- </option>
<option value="1">Option Two</option>
</select>
<span class="indent50">
<span style='visibility:hidden' class='VAMErrorText' id='DropdownIsRequired'>
<span id='DropdownIsRequired_Txt'>Please select a thing.</span>
</span>
</span>
</div>
问题是 JQuery Steps 在其呈现方法期间将事件侦听器从 DOM 中剥离,这会禁用 Peter Blum 验证器所依赖的侦听器来完成他们的工作.请参阅 this question 中 Kaish 的回答;用他在那里使用的方法替换 JQuery 步骤 render()
方法解决了我的问题。