Javascript 在iphone的multiselect框中取消选择最后一个选项

Javascript 在iphone的multiselect框中取消选择最后一个选项,javascript,jquery,Javascript,Jquery,我使用以下jquery代码来限制multi-select框中的选择。它在任何android设备上都可以正常工作,但问题发生在iphone上 在iphone中,会显示警告消息,但最后选择的元素不会按预期取消选择。它应该显示所选的3个项目,但显示iphone中出现警报消息后所选的4个项目。任何暗示都将不胜感激。提前谢谢 <select id="mob-industry"> <option value="1">Web Development</option>

我使用以下jquery代码来限制multi-select框中的选择。它在任何android设备上都可以正常工作,但问题发生在iphone上

在iphone中,会显示警告消息,但最后选择的元素不会按预期取消选择。它应该显示所选的3个项目,但显示iphone中出现警报消息后所选的4个项目。任何暗示都将不胜感激。提前谢谢

<select id="mob-industry">
  <option value="1">Web Development</option>
  <option value="2">Architecture</option>
  <option value="3">Software Development</option>
  <option value="4">Hardware</option>
</select>


var last_valid_selection = null;
$('#mob-industry').change(function(event) {
    if ($(this).val().length > 3) {
        sweetAlert("","Only 3 Allowed","info");
          $(this).val(last_valid_selection);
    } else {
          last_valid_selection = $(this).val();
    }
 });

我猜你的方法是从以下方面得到的:

但我认为这才是你真正想要/应该使用的:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

<select id="mob-industry" multiple>
    <option value="1">Web Development</option>
    <option value="2">Architecture</option>
    <option value="3">Software Development</option>
    <option value="4">Hardware</option>
</select>

$('#mob-industry').bind("vmousedown", function(event) {
    var num_selected = $(this).find(":selected").length;
    if (num_selected == 3) {
        var last_selected_value = $(event.target).val();
        var select_array = $(this).val();
        if ($.inArray(last_selected_value, select_array) == -1) {
            alert("YOU SHALL NOT PASS!!!");
            event.preventDefault();
            return false;
        }
    }
});
Fiddle使用mousedown而不是.bindvmousedown与计算机兼容:

JsDoIt移动模拟,尽管在选择选项时会显示一些奇怪的错误。忽略这一点


哦,顺便说一句,另一种方法是使用单击而不是.bindvclick与计算机兼容:

当选择了3个以上时,是否尝试返回false?是的,我尝试过,但没有成功:有另一种方法可以使用$.data撤消选择。。请注意,您是否尝试删除sweetAlert?如果iphone上的sweetAlert出现错误,则下一行可能不会执行。是的,我也删除了该行,让我用$.datas检查。这不会阻止selection@Macainian有了这段代码,我可以选择尽可能多的选项。这次修复并测试了它:还添加了jsfiddleLol。忘记。使用touchstart代替touchstart虽然我不知道是否有touchstart,但您可能必须执行touchstart函数{};