1

我正在使用 JQuery Steps 在 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 id="wizard">) 的 div 之外都可以 100% 正常工作,但在向导 div 内无法正常工作。单击下拉菜单不会立即按预期进行验证,如果我手动调用验证window.DES_ValidateGroup("StepOne"),它将正确返回步骤有问题(步骤图块变为红色),但不会显示随之而来的错误消息与验证者。

深入研究为什么会这样,<span>VAM 验证器发出的标签似乎有一个内联visibility标签,可以防止它们被隐藏,然后 VAM 的 javascript 会在需要时将其删除并重新应用(例如,当验证器失败时,然后当它再次成功时)。当visibility向导 div 内的验证失败时,标签没有被正确删除。

有没有人知道为什么会这样,以及我该如何解决?

编辑:作为参考,这是发出的代码:

 <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>
4

1 回答 1

0

问题在于 JQuery Steps 在其渲染方法期间将事件侦听器从 DOM 中剥离出来,从而禁用了 Peter Blum 验证器完成工作所依赖的侦听器。请参阅 Kaish 在这个问题中的回答;render()用他在那里使用的方法替换 JQuery Steps方法解决了我的问题。

于 2015-06-29T15:02:43.657 回答