如何防止每次加载页面时都执行jQuery函数?
我相信我有办法解决我的问题,但我想确定。这就是我所拥有的:如何防止每次加载页面时都执行jQuery函数?,jquery,forms,post,onsubmit,Jquery,Forms,Post,Onsubmit,我相信我有办法解决我的问题,但我想确定。这就是我所拥有的: <html>... <body>... <script type="text/javascript" src="../JS/jquery.js"></script> <script type="text/javascript" src="../JS/respond.min.js"></script> <script type="text/javascr
<html>...
<body>...
<script type="text/javascript" src="../JS/jquery.js"></script>
<script type="text/javascript" src="../JS/respond.min.js"></script>
<script type="text/javascript" src="../JS/jquery.min.js"></script>
<script type="text/javascript" src="../JS/validate.js"></script>
<script type="text/javascript" src="../JS/jQueryCalls.js"></script>
...
<form name="login-form" class="login-form" method="post" onSubmit="login()">
<div class="header">
<h1>Sign In</h1>
</div>
<div class="content">
<input type="hidden" name="siteToken" value="$token" />
<input id="username" name="username" type="text" class="input username" placeholder="Username" required="required" />
<div class="user-icon"></div>
<input id="password" name="password" type="password" class="input password" placeholder="Password" required="required" />
<div class="pass-icon"></div>
</div>
<div class="footer">
<input type="submit" name="submit" value="Login" class="button" />
</div>
</form>
每次加载页面时,都会执行此函数-显然,这会产生问题,因为我禁用了输入。我的假设是,我可以通过以下方式解决问题:
$(document).ready(function login() {
$('.login-form').submit(function() {
var formData = $(this).serialize();
.post('whatever', formData,...
我很好奇是否有人对此有任何见解,为什么每次加载页面时都会执行它?具体地说,我是否需要修改表单操作属性、submit上的不同实现等?我假设浏览器只是查看文件并执行包含的函数。另外,我在chrome控制台中收到一个跨原点错误。php
文件是否需要与jQuery函数位于同一目录中?欢迎您的任何意见 关键在于:
$(function login() {
});
请记住,jQuery不是一种不同的语言——它只是javascript,已经定义了一些辅助函数。因此,您正在调用$()
函数,并将函数作为参数传入。您命名函数的事实与此无关-它仍然作为参数传递给$()
调用$()
或jQuery()
函数并传入另一个函数时,它是定义文档就绪事件处理程序的快捷方式。因此,您的代码实际上与执行此操作相同:
$(document).ready(function() {
var formData = $('#login-form').serialize();
$("input").prop("disabled", true);
// the rest of your function here...
});
…这会导致它在每次页面加载时运行
如果您只是定义一个稍后将调用的函数,那么没有理由将其包装为$()
。您可以这样定义函数:
function login() {
var formData = $('#login-form').serialize();
$("input").prop("disabled", true);
// the rest of your function here...
}
关键在于:
$(function login() {
});
请记住,jQuery不是一种不同的语言——它只是javascript,已经定义了一些辅助函数。因此,您正在调用$()
函数,并将函数作为参数传入。您命名函数的事实与此无关-它仍然作为参数传递给$()
调用$()
或jQuery()
函数并传入另一个函数时,它是定义文档就绪事件处理程序的快捷方式。因此,您的代码实际上与执行此操作相同:
$(document).ready(function() {
var formData = $('#login-form').serialize();
$("input").prop("disabled", true);
// the rest of your function here...
});
…这会导致它在每次页面加载时运行
如果您只是定义一个稍后将调用的函数,那么没有理由将其包装为$()
。您可以这样定义函数:
function login() {
var formData = $('#login-form').serialize();
$("input").prop("disabled", true);
// the rest of your function here...
}