【发布时间】:2012-03-26 13:46:25
【问题描述】:
我有一个带有值“是”和“否”的单选按钮。如果用户选择“是”,则文本框向下滑动。所以必须验证。如果用户点击“否”,文本框向上滑动,无需验证。
我尝试使用 ValidationMessageFor(model => model.TextBoxValue),但我无法提交表单,即使文本框向上滑动,它也会验证文本框。
【问题讨论】:
标签: jquery asp.net asp.net-mvc-3 jquery-validate
我有一个带有值“是”和“否”的单选按钮。如果用户选择“是”,则文本框向下滑动。所以必须验证。如果用户点击“否”,文本框向上滑动,无需验证。
我尝试使用 ValidationMessageFor(model => model.TextBoxValue),但我无法提交表单,即使文本框向上滑动,它也会验证文本框。
【问题讨论】:
标签: jquery asp.net asp.net-mvc-3 jquery-validate
“JQuery.Validate”库可能是一个合理的解决方案。它将允许您根据某些条件验证您的字段。语法相当有表现力:
$("#SomeFormId form").validate({
rules: {
"YourTextBoxId": {
required: {
depends: function(element) {
return $("#YourCheckBoxId").is(":checked");
}
}
}
// Writing this is notepad, you'll have to look up the syntax if you choose this approach.
【讨论】:
添加一个隐藏字段来跟踪文本框是否显示。在验证之前检查该字段。
您甚至可以使用 javascript 查看 textbox.style.display == 'hidden' 并从中运行验证函数。
希望这会有所帮助。
【讨论】:
我假设您正在使用 jquery 上下滑动 textbox。另一种方法是在您向上或向下滑动 textbox 的 disabled 属性时使用 jQuery 切换它。禁用的元素不会提交到服务器。
编辑:
我会说在滑出textbox 的代码之后或之前,您会执行以下操作
<<when showing the textbox
$("#textbox-id").attr('disabled', false);
<<when hiding the textbox
$("#textbox-id").attr('disabled', true);
这将禁止用户以任何方式使用该textbox,包括将其提交到服务器,因此服务器不会看到其中可能包含的任何值。
edit2:刚刚记住,您还需要在提交表单时检查checkbox 的值。如果选中,请检查textbox,如果没有则不要。
【讨论】:
textbox 的 ID。当textbox 滑入或滑出时,这将与正在执行的任何其他代码内联。
据我了解,您想检查单选按钮的状态,相应地显示/隐藏文本框。显示时需要验证,隐藏时不需要验证。
我建议在渲染时启用验证。现在根据选择,显示/隐藏文本框,将以下代码放入 $(document).ready()
// 选择单选按钮 var radioBtn = $('#radioBtn1'); var initialState = radioBtn.is(':checked'); //隐藏/显示 var textbox = $('#txtBox1')[initialState ? '显示隐藏'](); // 根据单选按钮选择显示/隐藏 radioBtn.click(函数(){ 文本框[初始状态? '显示隐藏'](); }); }希望这会有所帮助, 问候
【讨论】: