我想在单击某个按钮时禁用验证某些文本框,例如,如果我有4个文本框,当我单击按钮1时,只有前2个文本框应该验证,当我单击按钮2时,只有最后2个文本框应该验证,目前所有的框都在验证,如何使用jquery启用/禁用文本框验证,验证只在UI中可见的文本框上激活,而不是隐藏的文本框,我用Google搜索它,发现了类似这样的事情:
<script type="text/javascript">
document.getElementById("YourbuttonID").disableValidation = true;
</script>
以下是我正在使用的代码:
<script type="text/javascript">
$(document).ready(function () {
var $startdates = $('#startDates');
var $endDates = $('#endDates');
var $showEvents = $('#showEvents');
$startdates.hide();
$endDates.hide();
$showEvents.hide();
$('#hide').click(function () {
$startdates.show();
$endDates.show();
$('#showEvents').show();
$('#eventdids').hide();
$(this).hide();
return false;
});
$("#hide").validate({
ignore: "#hide"
})
$('#showEvents').click(function () {
$startdates.hide();
$endDates.hide();
$('#eventdids').show();
$('#hide').show();
$(this).hide();
return false;
});
});
</script>
<tr id="startDates">
<td>
<div class="editor-label">
<%: Html.LabelFor(model => model.StartDate) %>
</div>
</td>
<td>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.StartDate) %>
<%: Html.ValidationMessageFor(model => model.StartDate) %>
</div>
</td>
</tr>
<tr id="endDates">
<td>
<div class="editor-label">
<%: Html.LabelFor(model => model.EndDate) %>
</div>
</td>
<td>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.EndDate) %>
<%: Html.ValidationMessageFor(model => model.EndDate) %>
</div>
</td>
</tr>
<tr id="eventdids">
<td>
<label>Events</label>
</td>
<td>
<% foreach (var item in (SelectList)ViewData["events"]) { %>
<input type="checkbox" name="Name" value="<%=item.Value %>" />
<label for="<%=item.Value%>"><%=item.Text%></label>
<br />
<% } %>
</td>
<td><input type="button" name="Select" id="hide" style="width:auto" value="Select All Events" /></td>
</tr>
</table>
<input type="button" name="show" id="showEvents" style="width:auto" value="Show All Events" />
<p>
<input type="submit" value="Create" />
</p>
答案 0 :(得分:1)
我不会使用隐藏元素+它会在服务器验证时失败 - 根据您的模型仍然需要这些字段
您必须创建一个依赖验证来处理这两种情况 这可能会对您有所帮助conditional-validation-in-asp-net-mvc-3