【发布时间】:2017-05-05 03:28:05
【问题描述】:
我试图搜索类似的问题,但我找不到任何东西,所以如果您知道任何类似的问题,请告诉我。
让我解释一下我在做什么: 我有一个脚本可以验证 js 文件中的表单,它在我拥有的表单的任何页面中都可以正常工作,问题是当我使用 jquery 加载表单时它不起作用,我尝试使用下一行不同的地方:页眉、页脚等
<script src='myFile.js'></script>
到目前为止,唯一有效的方法是在表单本身内部编写上面的代码行。 我认为这与DOM工作的形式有关,我也尝试过使用和不使用它。
$(document).ready(function (){ //code});
只有当我在表单本身中添加带有 src 属性的脚本标签时它才会起作用。
将脚本标签添加到我使用 jquery 加载的任何表单对我来说不是一个大问题,但它的工作效率更高,而且当我将脚本标签添加到任何表单并使用加载它时ajax 我得到下一个控制台警告,只有当我从表单文件中删除脚本标记时才会消失:
jquery-3.2.1.min.js:4 [弃用] 主线程上的同步 XMLHttpRequest 已弃用,因为它对最终用户的体验产生不利影响。如需更多帮助,请查看https://xhr.spec.whatwg.org/。
这是我的代码的一部分:
<!--home.html-->
<div id='formFrame'>
</div>
<script>
$("#formFrame").load("html/loginForm.html");
</script>
<!--end of home.html-->
<!--loginForm.html-->
<form action='somePage.php' method='post' id='loginForm'>
<input type='email' name='email' placeholder='email'>
<input type='password' name='password' placeholder='password'>
<input type='submit' name='submit' value='Login'>
</form>
<script src='js/validate.js'></script>
<!--end of loginForm.html-->
<!--validation script (validate.js)-->
$(document).ready(function (){
$("#loginForm").submit(function (e){
e.preventDefault();
alert("Working");
});
});
感谢您抽出宝贵的时间阅读本文,非常感谢!
【问题讨论】:
-
你需要把 $(document).ready 放在脚本标签中。
-
感谢您的回答 Nair,$(document).ready 已经写在我的脚本标签 (validate.js) 中,我想我可能误解了您,请您指出确切的位置是吗?
-
$("#formFrame").load("html/loginForm.html");我认为您正在尝试加载一个尚不存在的元素。您可以使用 .ready() 但为什么不将 .load() 行与您已有的 ready() 放在同一块中? -
你需要把脚本按正确的顺序排列。如果你需要在jquery中调用一个函数你需要先加载jquery
-
你好,杰森,谢谢,我试过了,但我没有运气,我尝试在你写 abobe 的行中添加 $(document).ready 但那行不通,还尝试做同样的事情并删除脚本文件中的 ready 语句,但这也不起作用,并且导致其他元素不再起作用,我认为答案更多地与逻辑而不是语法有关,因为正如我之前所说的脚本运行良好,问题是当我尝试在使用 ajax 加载的表单上使用脚本时。我非常感谢你们为我提供的帮助。谢谢,我希望我们能尽快解决这个问题:)。
标签: javascript jquery