NON JavaScript版输入自动完成所需的建议

时间:2010-09-21 04:30:02

标签: javascript jquery autocomplete compatibility

我正在构建一个对jQuery很重视的应用程序。我可以在不使用JS的情况下处理大部分内容,但仍然有一个正常运行的网站,但是有一点让我不知所措。 (注意,我使用的是ASP.NET MVC,但在这种情况下无关紧要)

我有一个输入字段,它充分利用了jQuery-UI AutoComplete。行为很简单。要求用户输入他们的城市,但是会获得有效城市的自动完成列表。如果城市无效,服务器端验证将触发并告诉他们再试一次。

如果他们确实选择了有效城市,则jQuery方法会更新包含所选城市的CityID的隐藏字段。这非常好用,我非常喜欢这种表现。

这是问题进入的地方。如果浏览器中没有JS,则不会更新ID字段,因此不会更新DB。我根本没有在服务器端使用自动完成输入,只是ID字段。什么是解决这个问题的好方法?

4 个答案:

答案 0 :(得分:3)

默认为包含city作为选项且id为值的select元素,并在页面加载时将脚本更改为自动完成字段。

答案 1 :(得分:1)

有几个选择:

1 - 最初提供HTML以显示“隐藏”输入,并且不包括“自动完成”输入。当JS加载时,有一个函数编辑DOM到你当前的情况。

2 - 让表单默认将“自动完成”数据发送到服务器。使用javascript编辑“发送”功能,让它切换到“隐藏”输入。

答案 2 :(得分:1)

如果出于某种原因,sje397的答案对您不起作用(这是一个优雅的解决方案,除非城市自动选择基于屏幕上的其他字段,例如邮政编码或州),只需POST两个字段。在评估POSTed数据时,如果CITY文本框有数据,而隐藏字段没有,则使用jquery回调使用的相同验证方法评估输入的城市。如果隐藏字段包含数据,则假定已启用javascript并使用当前逻辑。

答案 3 :(得分:0)

默认情况下将页面设置为通过intertubes将用户输入发送到服务器,如果启用了javascript,则更改它以便仅发送ID(显然使用javascript)。