2017-04-20 75 views
0

你好,我有一个JS问题,因为我不知道多少它,我不知道从哪里开始,以解决它!Javascript表单脚本无法在手机上工作(但在桌面上完美)

我目前有一个脚本运行在django网页上,它隐藏了两个选项列表中的不兼容选项;使用参考词典。

该脚本在桌面上工作得很好; ,但当我从移动设备上查看页面时根本没有。(所有的选项仍然可见...!)

任何想法都会非常感激!

这里是JS Fiddle

<div class="form-group col-sm-4 col-md-3"> 
<label for="id_tasks">Tasks:</label> 
<select class="form-control" id="id_tasks" name="task"> 
    <option value="0" selected="selected">---------</option> 
    <option value="1">Tie-job: Front-tie Marker</option> 
    <option value="2">Tie-job: Scrapmachine support trackman</option> 
    <option value="3">Tie-job: Plate Thrower</option> 
    <option value="4">Tie-job: New-tie Marker</option> 
</select> 
</div> 

<div class="form-group col-sm-4 col-md-3"> 
<label for="id_craft">Craft:</label> 
    <select class="form-control" id="id_craft" name="craft"> 
    <option value="0" selected="selected">---------</option> 
    <option value="1">Senior Engineer</option> 
    <option value="2">Roadmaster</option> 
    <option value="3">Foreman</option> 
    <option value="4">Assistant Foreman</option> 
    <option value="5">Electrical Welder EA</option> 
    <option value="6">Oxygen Welder OA</option> 
    <option value="7">Railway Machine Operator (RMO)</option> 
    <option value="8">Truck Driver (Type A, B or C)</option> 
</select> 
</div> 

而且JS

$(document).ready(function() { 
    $("#id_craft option:not([value=0])").hide(); 
}); 


$("#id_tasks").change(function() { 

    $("#id_craft").val("0"); 
    $("#id_craft option:not([value=0])").hide(); 
    var compIds = { 
    1: [1, 2], 
    2: [3, 4], 
    3: [4, 5], 
    4: [6, 7] 
    }; 
    for (var i = 0; i < compIds[$("#id_tasks").val()].length; i++) { 

    $("#id_craft option[value=" + compIds[$("#id_tasks").val()][i] + "]").show(); 
    } 
}); 
+0

这个问题如何不同,你已经[删除5分钟](http://stackoverflow.com/questions/43520742/javascript-form-script-not-working-on-mobile-but-perfect- on-dekstop)之前? – Andreas

+0

您正在测试哪些设备/浏览器? –

+0

适用于Chrome和Firefox(但不适用于IE ...);不能在iOS(Safari)上运行,尽管... – Malcoolm

回答

0

我相信有一个问题在iOS上与确认您的选择option:not([value=0])

您应该检查http://caniuse.com/以查看移动设备是否支持该方法,如果不支持,则可以使用.forEach()循环代替。

+0

感谢您的建议;我试着做一个$(“#id_craft选项”)。 $(“#id_craft option [0]”)。show();但它似乎不工作,无论是在移动... – Malcoolm

+0

@Malcoolm哦,在这种情况下'hide()'可能不工作,因为选项列表并没有真正显示在HTML页面上,但在操作系统的用户界面。你有没有尝试完全通过'remove()'从DOM中移除它? https://api.jquery.com/remove/ – Marquizzo

+0

但是我怎么把选项放回去? – Malcoolm

相关问题