我有一个事件处理程序,应该在selectbox(id =“save-login”)的值发生变化后调用。选择框显示为滑块,因此我使用“slidestop”事件。该页面有一个登录按钮,用于将公式提交到同一个URL位置。提交表单后,将再次显示相同的页面。
不幸的是,在第一次提交后,当selectbox值发生变化时,将不再调用事件处理程序。如果我第二次提交表单,处理程序通常会再次运行。
这是我的页面代码和用于绑定事件处理程序的脚本:
<!DOCTYPE HTML>
<HTML>
<head>
<link rel="stylesheet" href="jquery.mobile.structure-1.0.1.CSS" />
<link rel="stylesheet" href="jquery.mobile-1.3.0.CSS" />
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/jquery.mobile-1.3.0.min.js"></script>
</head>
<body>
<div data-role="page" id="login" data-theme="c">
<div data-role="content">
<div id="loginform">
<form action="login_test.html" method="post" data-transition="flip">
<ul data-role="listview" data-inset="true" data-theme="c">
<li>
<label for="save-login">Login-Informationen speichern</label>
<select name="save-login" id="save-login" data-role="slider">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
</li>
</ul>
<input type="submit" value="Login" data-role="button">
</form>
</div>
</div>
<script type="text/javascript">
$(":jqmData(role='page')").on("pageshow", function(event) {
var selectbox = $("#save-login");
selectbox.on("slidestop", function(event, ui) {
if (this.value == "1") {
alert("Autologin enabled");
}
});
});
</script>
</div>
</body>
</HTML>
是否有人知道导致事件处理程序无法正常工作的原因?
答案 0 :(得分:1)
将您的代码更改为:
$(document).off("pageshow", ":jqmData(role='page')").on("pageshow", ":jqmData(role='page')" ,function(event) {
$(document).on("slidestop", "#save-login",function(event, ui) {
if (this.value == "1") {
alert("Autologin enabled");
}
});
});