如何防止每次加载页面时都执行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...
}