将条件requiredFieldValidators添加到c#asp.net中动态创建的表单中
本文关键字:动态 创建 表单 net c#asp 条件 requiredFieldValidators 添加 | 更新日期: 2023-09-27 17:58:22
好的,
我有一个完全呈现的动态表单(我不知道表单的内容,它是通过Web服务提供给我的)
我使用asp.net RequiredFieldValidator
进行验证,因为我在这篇文章中读到,我们可以根据字段是否可见来动态地打开和关闭验证器具有CCD_ 2功能。
尽管现在我已经呈现了表单,但我在使用这个javascript时遇到了一些麻烦,因为我不想把它放在aspx文件中,(无论如何都不能控制它,因为表单是在代码后台从Web服务数据构建的…)
所以我查看了客户端ID,发现验证器的客户端ID就是它所呈现的跨度的ID
所以我试着在firebug中运行这个来测试我是否可以启用/禁用其中一个验证器,但这似乎是不可能的,jQueryspan元素没有启用它的属性。
ValidatorEnable($("#ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_reqAnswer_373ac8b7_8da9_467b_b9b4_d586e45a7504"), false);
以及这个附带的html
<div class="question-container question-odd" id="ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_question-373ac8b7-8da9-467b-b9b4-d586e45a7504">
<div class="question-meta">
<h3 class="validation-label">Which club have you visited?</h3>
<span style="display: block; margin-bottom: 10px; margin-top: 5px;" class="error validation" id="ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_reqAnswer_373ac8b7_8da9_467b_b9b4_d586e45a7504">Please fill out this field.</span>
</div>
<input type="text" class="answerswer-container text" id="ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_answer_373ac8b7_8da9_467b_b9b4_d586e45a7504" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$MasterWithNavContent$Poll_4$answer_373ac8b7_8da9_467b_b9b4_d586e45a7504">
</div>
有人知道我哪里错了吗?也许我要快速从服务器端ClientId跳到RFV渲染到的<span>
?但它们看起来完全一样。希望有人能给我指明好的方向!
也许更好的方法是遍历客户端的验证器数组(Page_Validators
)并找到要禁用的验证器。
有关更多信息,请参阅此MSDN页面和此代码项目文章。
也许更合适的方法是
ValidatorEnable($("<%= reqAnswer.ClientID %>")[0], false);
使用<%= reqAnswer.ClientID %>
可以避免对验证器的客户端ID进行猜测或硬编码。在jQuery $()
之后添加[0]
将获得实际的验证器DOM元素,而不是jQuery包装器。
[0]
的来源