gpt4 book ai didi

javascript - 提交表单时如何调用方法?

转载 作者:行者123 更新时间:2023-11-30 06:25:27 25 4
gpt4 key购买 nike

我的目标是在我按下表单中的提交按钮时调用方法 onClickLogin。但是只有 initialize 方法(对于 loginPageController)被调用。当每个方法都在 app 对象中时,这段代码工作正常,但是当我添加 loginPageController 脚本时,脚本已停止正常工作。我该如何解决?

我有这个 HTML 代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

<link rel="stylesheet" href="css/jquery.mobile-1.4.0.css" />
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery.mobile-1.4.0.js"></script>

<link rel="stylesheet" type="text/css" href="css/index.css" />
<script type="text/javascript" src="js/index.js"></script>

<title>Example</title>
</head>
<body>

<!-- Start of login page -->
<div data-role="page" id="login-page">

<!-- Start of page header -->
<div data-role="header" style="overflow: hidden;">
<h1>Login</h1>
</div>
<!-- /header -->

<!-- Start of page content -->
<div role="main" class="ui-content">
<form id="login-form">
<label for="login-username" class="ui-hidden-accessible">User Name</label>
<input name="login-username" id="login-username" placeholder="User Name" value="" type="text">

<label for="login-password" class="ui-hidden-accessible">Password</label>
<input name="login-password" id="login-password" placeholder="Password" value="" type="password">

<div class="ui-grid-a">
<div class="ui-block-a"></div>
<div class="ui-block-b">
<button type="submit" name="login-submit" value="login-submit">Login</button>
</div>
</div>
</form>
</div>
<!-- /content -->

</div>
<!-- /page -->

<!-- Start of second page -->
<div data-role="page" id="bar">

<!-- Start of page content -->
<div role="main" class="ui-content">
<p>I'm the second in the source order so I'm hidden when the page
loads. I'm just shown if a link that references my id is beeing
clicked.</p>
<p>
<a href="#foo">Back to foo</a>
</p>
</div>
<!-- /content -->

</div>
<!-- /page -->

<script type="text/javascript">
app.initialize();
</script>
</body>
</html>

我有这个 JavaScript:

var app = {
initialize: function() {
console.log("app.initialize");
this.bindEvents();
},

bindEvents: function() {
console.log("app.bindEvents");
$(document).on("pageinit", "#login-page", loginPageController.initialize);
}
};

var loginPageController = {
initialize: function() {
console.log("loginPageController.initialize");
$("#login-form").on("submit", this.onClickLogin);
},

onClickLogin: function() {
console.log("loginPageController.onClickLogin");
}
};

最佳答案

查看这个工作 fiddle : http://jsfiddle.net/THWZU/7/


1:jQuery Mobile需要先初始化自身。

您的代码未按正确顺序运行。它需要在 jQuery 和 jQuery Mobile 完成它们自己的所有初始化之后运行。在调用初始化之前,您需要加载整个页面。

对于纯 jQuery,这就是您所需要的:

$( document ).ready( function() {
app.initialize();
});

这也适用于您,使用 jQuery Mobile:

$( document ).on( "pagebeforeshow", function() {
app.initialize();
});

记住这些事件: http://api.jquerymobile.com/category/events/

尤其是这些:


2:绑定(bind)到按钮本身,然后返回false

新的 loginPageController 代码:

var loginPageController = {
initialize: function() {
console.log("loginPageController.initialize");
$("[name='login-submit']").on("click", this.onClickLogin);
},
onClickLogin: function() {
console.log("loginPageController.onClickLogin");
return false
}
};

查看这个工作 fiddle : http://jsfiddle.net/THWZU/7/

关于javascript - 提交表单时如何调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21455093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com