jquery 移动自定义 select 失去对 select 选项的关注
jquery mobile custom select lose focus on select option
当我点击一个长列表自定义 select 时,会显示一个带有可能选项的新 window,此时我有两个可能的操作:在这种情况下关闭 window它可以很好地返回到之前的 window 而不会失去焦点,但是当我 select 一个选项时,这个 returns 到之前的 window 失去焦点。
在以前的版本 1.0.1 中工作正常。
但在 1.4.5 中没有。
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<div class="ui-field-contain">
<label for="select-custom-20">Long list:</label>
<select name="select-custom-20" id="select-custom-20" data-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
jquery手机官网有例子:
1.4.5 不工作
https://demos.jquerymobile.com/1.4.5/selectmenu-custom/
1.0.1 工作正常!!
https://demos.jquerymobile.com/1.0.1/docs/forms/selects/custom.html
关于如何在 1.4.5 版中更正此问题的任何建议?
当您在 custom-select
中放入一个很长的项目列表时,JQM 将使用 data-role = "dialog"
创建一个新页面。如果没有页面转换,焦点会及时恢复,但如果您希望 custom-select
对话框也显示平滑的页面转换,则需要增加该按钮焦点的延迟。
您可以猴子修补 JQM 并检查 dialog-page
和转换。
这是一个例子:
$(document).on('mobileinit', function () {
$.widget( "mobile.selectmenu", $.mobile.selectmenu, {
_focusButton : function() {
var self = this;
if(self.menuType == "page" && $.mobile.defaultDialogTransition != "none") {
setTimeout( function() {
self.button.focus();
}, 200); // increased delay
} else {
setTimeout( function() {
self.button.focus();
}, 40); // default delay
}
}
});
});
为了完整起见,请注意,如果您设置了 hashListeningEnabled = false
,则此问题不会引起注意,因为所有链接都在内部处理,不会有任何 window.history
操作。
当我点击一个长列表自定义 select 时,会显示一个带有可能选项的新 window,此时我有两个可能的操作:在这种情况下关闭 window它可以很好地返回到之前的 window 而不会失去焦点,但是当我 select 一个选项时,这个 returns 到之前的 window 失去焦点。
在以前的版本 1.0.1 中工作正常。
但在 1.4.5 中没有。
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<div class="ui-field-contain">
<label for="select-custom-20">Long list:</label>
<select name="select-custom-20" id="select-custom-20" data-native-menu="false">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>
jquery手机官网有例子:
1.4.5 不工作 https://demos.jquerymobile.com/1.4.5/selectmenu-custom/
1.0.1 工作正常!! https://demos.jquerymobile.com/1.0.1/docs/forms/selects/custom.html
关于如何在 1.4.5 版中更正此问题的任何建议?
当您在 custom-select
中放入一个很长的项目列表时,JQM 将使用 data-role = "dialog"
创建一个新页面。如果没有页面转换,焦点会及时恢复,但如果您希望 custom-select
对话框也显示平滑的页面转换,则需要增加该按钮焦点的延迟。
您可以猴子修补 JQM 并检查 dialog-page
和转换。
这是一个例子:
$(document).on('mobileinit', function () {
$.widget( "mobile.selectmenu", $.mobile.selectmenu, {
_focusButton : function() {
var self = this;
if(self.menuType == "page" && $.mobile.defaultDialogTransition != "none") {
setTimeout( function() {
self.button.focus();
}, 200); // increased delay
} else {
setTimeout( function() {
self.button.focus();
}, 40); // default delay
}
}
});
});
为了完整起见,请注意,如果您设置了
hashListeningEnabled = false
,则此问题不会引起注意,因为所有链接都在内部处理,不会有任何 window.history
操作。