我正在创建一个动态表单。即基于用户从下拉框中选择。我可以有2个字段到20个字段,具体取决于下拉选项。 因此,每次用户更改下拉列表时,我们都可以拥有各种类型的不同表单字段。
提交url参数。是否可以仅提交可见且与用户选择相关的表单字段 当前url字符串正在提交所有值。
场景1
当用户选择说" A"从下拉。 我们显示名字和姓氏输入字段 和url?fname = fname& lname = lname
场景2
当用户选择说" B"从下拉。 我们显示名字,姓氏输入字段和地址 和url?fname = fname& lname = lname& addres = address
场景3
当用户选择说" Z"从下拉。 我们显示不同的输入字段,如名字,姓氏,地址,邮编,年龄,ssn,子女,性别,单元格,家庭,办公室 和url?fname = fname& lname = lname& addres = address& ddress,zip,age,ssn,childname,sex,cell,home,office
我的问题是..是否可以根据下拉选择构建一个动态URL查询字符串?它将如何跟踪20到30种不同的选择。由于每个选择显示不同的形式。
什么是最好的方法。 JSOn是否需要为url查询字符串程序集提供必要的信息?
有没有例子?
答案 0 :(得分:1)
我认为你必须使用.serialize()来序列化那些可见和忽略的字段,这些字段在你的情况下在下拉列表中隐藏不必要的字段而不是序列化表单并作为参数传递给ajax请求。
场景1的
当用户从下拉列表中选择declare
@ldt_from time = '13:00'
,@ldt_to time = '14:00';
-- dummy data prepare
;with [my_setups] as
(
select [SetupStart] = cast('2017-01-23 13:56:42.000' as datetime), [StartTime] = cast('2017-01-23 14:41:06.000' as datetime)
union all
select [SetupStart] = cast('2017-01-23 12:45:00.000' as datetime), [StartTime] = cast('2017-01-23 12:46:00.000' as datetime)
)
-- end dummy data prepare
select [minutes] =
datediff(mi, [SetupStart], [StartTime])
- datediff(day, [SetupStart], [StartTime]) * (datediff(mi, @ldt_from, @ldt_to))
+ case when cast([SetupStart] as time) between @ldt_from and @ldt_to or cast([StartTime] as time) between @ldt_from and @ldt_to then
datediff
(
mi
,case when cast([SetupStart] as time) > @ldt_from then cast([SetupStart] as time) else @ldt_from end
,case when cast([StartTime] as time) < @ldt_to then cast([StartTime] as time) else @ldt_to end
)
else 0 end
from
[my_setups]
时,隐藏数据除了 fname &amp; lname 和序列化表单如下所示,它只会序列化可见字段。
A
当用户选择说&#34; A&#34;从下拉。我们显示名字和姓氏输入字段和网址?fname = fname&amp; lname = lname
依旧......
例如,请找到belo片段
$(':input:visible', 'form').serialize();
&#13;
var serializeData = $(':input:visible', 'form').serialize();
alert(serializeData);
&#13;