如何防止在每次页面加载时执行此jQuery函数?

我相信我有解决问题的方法,但我想确定。 这就是我所拥有的:

... ...      ...  

现在onSubmit链接到jQuery函数是一个外部文件,jQueryCalls.js。 这是function:

 $(function login() { var formData = $('#login-form').serialize(); //Grab all submission data from login form $("input").prop("disabled", true); //Disable inputs for the duration of the post var request = $.post('E:\Additional Programs\xampp\htdocs\Vista_Ridge_Territory_System\PHP\Scripts\VRC_LoginProcess.php', formData, loginMessage); //Handle server-side response function loginMessage(data) { $('.header').append("nada"); }; }); 

每次加载页面时,都会执行此function – 这显然会因为禁用输入而产生问题。 我的假设是我可以解决这个问题:

 $(document).ready(function login() { $('.login-form').submit(function() { var formData = $(this).serialize(); .post('whatever', formData,... 

我很好奇是否有人对此有任何见解,以及为什么它会在每个页面加载时执行? 具体来说,我是否需要修改表单操作属性, onSubmit上的不同实现等? 我假设浏览器只是看到文件并执行包含函数。 另外,我在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... }