2017-05-05 117 views
0

我試圖尋找類似的問題,但我找不到任何東西,所以如果你知道任何類似的問題,請讓我知道。jquery腳本不能在jquery加載頁面中工作

讓我解釋一下我在做什麼: 我有一個腳本來驗證js文件中的表單,它可以在任何頁面中使用我有的表單工作正常,問題是,當我使用jquery加載表單時,它只是不「T工作,我已經用在不同的地方的下一行嘗試:頁眉,頁腳等

<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"); 
    }); 
}); 

感謝花一些寶貴的時間閱讀這一點,我明白了很多!

+1

您需要將$(document).ready放在腳本標記中。 –

+0

感謝您的回答Nair,$(document).ready已經寫在我的腳本標記(validate.js)中,我想我可能會誤解你,請你指出我到底把它放在哪裏? –

+0

'$(「#formFrame」)。load(「html/loginForm.html」);'我想你正試圖加載一個還不存在的元素。您可以使用.ready(),但爲什麼不將.load()行放在與ready()相同的塊中? –

回答

0

好傢伙,我找到了一個解決方案:

因爲似乎有衝突使用AJAX(.load)加載外部頁面時,我選擇使用PHP,而不是JavaScript的這工作得很好:

我刪除了下一個代碼

<script> 

    $("#formFrame").load("html/loginForm.html"); 

</script> 

,並添加了旁邊,我想我的加載內容的DIV:

<!--home.php (changed html to php)--> 
<div id='formFrame'> 
    <?php 
     require 'html/loginForm.html'; 
    ?> 
</div> 

我會喜歡使用Ajax的加載方法,以避免加載內容befere用戶可以請求它,但到目前爲止,這是我能夠想到的唯一解決方案。 感謝大家的幫助,這真的很有幫助!

0

由於我不能評論,把我的意見在答案!

我不確定你在validate.js中寫了什麼,但是如果你使用jQuery不顯眼的驗證,那麼你必須將驗證器重新綁定到窗體,如果你動態加載它。

在使用AJAX加載表單時,我在ASP.NET MVC中面臨同樣的問題。我不確定它會不會幫助你,但下面是代碼。

$("#formFrame").load("html/loginForm.html", function(){ 
    var $form = $("formSelector"); 
    $form.removeData('validator'); 
    $form.removeData('unobtrusiveValidation'); 
    $.validator.unobtrusive.parse($form); 
}); 
+0

感謝您的回答,不幸的是我沒有使用jQuery不顯眼的驗證或任何插件,所有我使用的是jquery :(如果它工作我想一個可能的解決方案我會回答我自己的問題。謝謝無論如何男人! –

+0

哦!希望你的可能的解決方案將工作!同時將是好的,如果你也可以把你的validate.js在代碼中的一些代碼!謝謝。 –

+0

感謝您的期望,我添加了一個aswer爲我工作,謝謝你的時間男人! –