问题描述:
我有一个带有下拉列表和文本框的简单对话框。 根据下拉列表的值,所需的值可以是简单文本,日期或数据库中的特定文本。 对于第一种情况,我工作的简单文本框很好。 对于第二种情况,我需要一个日期选择器。 对于第三种情况,我保留文本框,但我在其上添加了自动完成功能。
我的问题是第二种情况。我尝试了JQuery Datepicker,它工作正常,但我需要使用一个不同的(框架特定的)datepicker,这是一个服务器端Web UI控件。
当从下拉列表中选择日期类型时,我隐藏文本框(使用JQuery)并显示(隐藏)日期选择器,反之亦然。隐藏工作正常,但是当我尝试保存时,服务器端保存功能无法识别何时隐藏DatePicker。 我需要这样做的原因是因为我想知道何时保存DatePicker或Textbox中的值,具体取决于目前哪一个可见。
我尝试了所有与css相关的内容,而服务器似乎无法将这些属性识别为其他任何内容,而不是真实的。
可能的解决方案:
1)我可以做一个“黑客”解决方案并添加一个隐藏的文本框,并在每次切换日期选择器时在其中传递一个真或假的字符串。这样我就可以在保存时检查文本框的值,以了解是否隐藏了日期选择器。
2)另一个(目前正在测试它)是在我的.cs文件中创建一个void函数,它接受一个布尔输入并设置一个自定义可见性属性,我将添加到datepicker的框架中对或错。 每当我切换日期选择器时,我将使用AJAX调用来调用该函数并更改服务器端的datepicker属性。 但我不知道在我点击保存之前这个属性是否会保持更改,否则它将以某种方式返回其默认值。
我的问题: 以上任何解决方案对您而言都是好的,为什么? 你能想到一个更好的吗?
答案 0 :(得分:1)
我认为您最好的选择是始终在页面中使用3个表单控件,并使用选择框的display
事件简单地使用jquery切换其change
个状态。这样,您可以在表单验证期间删除未使用的表单元素并提交已使用的字段。
或者,您必须编写某种回发函数来处理重新打印选择change
的每个表单的部分被触发。
---编辑---
以下是您可以使用的表单验证示例:
$('form').submit(function(e){
e.preventDefault();
if($('select.group', this).val() == "datepicker"){
// Remove the other elemnts from the DOM
$('input.group, textbox.group').remove();
}
// Submit the form
$(this).submit();
});
以下是remove
方法的jQuery文档:http://api.jquery.com/remove/
答案 1 :(得分:0)
为了解决这个问题,Infadelic的评论解决了我的问题。 我发布它作为接受它的答案,以便更清晰。
为什么不区分下拉列表中的选择项目 清单?你有信息,你应该保存哪些价值。
毕竟比我预期的要简单。