为了澄清这个问题,这是我的场景:
我有一个用于移动设备的小型注册表单。
自然,我一直在桌面上开发表单,并且我的大部分测试都是在桌面上完成的。我也用移动设备进行了测试,在大多数情况下,一切正常——除了 JQuery 与<select>
标签绑定在一起时的“点击”事件。
我的表单中有三个<select>
字段,它们都是动态获取数据的。这个想法是你点击“国家”,JQuery 触发一个click
事件,然后使用 AJAX 从我的服务器获取国家列表。当用户点击“州”时,它将获取属于第一次选择时选择的国家的所有州。对于“城市”重复此行为。
这是一个截图:(“País”表示国家。“Estado/Departamento”是州,“Ciudad”是城市——我为西班牙名字道歉。我的实际代码是英文的,所以不要太担心这个!)
在上面的屏幕截图中,您可以看到它确实有效。
三个选择元素在这里:
Pais: <select class="form-control" name="country" id="country"></select>
Estado/Departamento: <select class="form-control" name="state" id="state"></select>
Ciudad: <select class="form-control" name="city" id="city"></select>
还有我的 jQuery 代码:
<script>
$(document).ready(function(){
//Actual listeners
$("#country").click(function(event){
$.get("pseudoapi/getCountries.php", function(data){
var countries = $("#country");
countries.empty();
for(var i = 0; i < data.length; i++)
{
countries.append("<option value='" + data[i]['id'] +"'>"+ data[i]['name'] +"</option>");
}
}, "json");
});
$("#state").click(function(event)
{
$.get("pseudoapi/getStates.php", {country_id : $("#country").val()}, function(data){
var state = $("#state");
state.empty();
for(var i = 0; i < data.length; i++)
{
state.append("<option value='" + data[i]['id'] +"'>"+ data[i]['name'] +"</option>");
}
}, "json");
});
$("#city").click(function(event)
{
$.get("pseudoapi/getCities.php", {country_id : $("#country").val(), state_id : $("#state").val()}, function(data){
var city = $("#city");
city.empty();
for(var i = 0; i < data.length; i++)
{
city.append("<option value='" + data[i]['id'] +"'>"+ data[i]['name'] +"</option>");
}
}, "json");
});
});
$("#country").change(function(event){
$("#state").empty();
$("#city").empty();
});
$("#state").change(function(event){
$("#city").empty();
});
</script>
找到不起作用的解决方案
我用谷歌搜索了一段时间,找到了一些解决方案。可悲的是,他们都没有工作。
首先,我了解了 jQuery mobile 及其vclick
事件。我几乎可以肯定这会奏效,但事实并非如此。Chrome 抱怨选择标签不存在 vclick 事件。
其次,我被告知在我的其余代码加载后加载 jQuery Mobile。我在结束</body>
标记之前加载了脚本,但这并没有使情况变得更好。
最后,也许令人沮丧,但似乎选择标签并未正式支持 click 事件,因此它应该在某些浏览器中有效,但在其他浏览器中无效。老实说,我在这里完全迷失了。
如果没有办法直接回答我的问题,那么即使在移动设备上点击它,用选项填充选择标签的最佳方法是什么?