我正在建立一个应用程序,这是沉重的jQuery。我可以在不使用JS的情况下处理大部分问题,并且仍然有一个正常运行的站点,但是有一点让我感到困惑。(请注意,我使用的是ASP.NET MVC,但在本例中这并不重要)
我有一个输入域,它充分利用了jQuery-UI AutoComplete。行为非常简单。系统要求用户输入他们的城市,但会给出一个有效城市的AutoComplete列表。如果城市无效,服务器端验证将触发并告诉他们重试。
如果他们确实选择了一个有效的城市,则jQuery方法将更新一个包含所选城市的CityID的隐藏字段。它工作得非常好,我真的很喜欢它的表现。
这就是问题所在。如果JS在浏览器中不可用,则ID字段不会更新,因此数据库也不会更新。我根本没有在服务器端使用AutoComplete输入,只使用了ID字段。什么是绕过这个问题的好解决方案?
发布于 2010-09-21 13:11:58
如果由于某些原因sje397的答案对您不起作用(这是一个优雅的解决方案,除非城市自动选择是基于屏幕上的其他字段,如邮政编码或州),只需发布这两个字段。在评估POSTed数据时,如果城市文本框有数据,而隐藏字段没有数据,那么使用与jquery回调相同的验证方法评估输入的城市。如果隐藏字段包含数据,则假定javascript已启用,并使用当前逻辑。
发布于 2010-09-21 12:39:54
默认为包含城市作为选项和id作为值的选择元素,并在页面加载时使用脚本将其更改为自动完成字段。
发布于 2010-09-21 13:05:09
有几个选项:
1-最初显示“隐藏”输入的HTML,但不包括“自动完成”输入。当JS加载时,让一个函数根据您的当前情况编辑DOM。
2-将表单默认设置为向服务器发送“自动完成”数据。使用javascript编辑"send“函数,使其切换到”隐藏“输入。
https://stackoverflow.com/questions/3757307
复制相似问题