2011-01-27 59 views
0

我的具體問題與實施Cedric Dugas的jQuery驗證插件(http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/#comments)的v1.7有關,但我相信這個問題很容易推廣到其他情況。爲什麼我無法在getScript回調中初始化jQuery函數?

通常予加載以下腳本像這樣:

<script src="inc/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script> 

然後初始化插件,i執行以下操作:

<script> 
$(document).ready(function() {  
    $("#myFormID").validationEngine(); 
}); 
</script> 

我有與的id屬性值的一個形式「myFormID」和腳本驗證表單域。這工作。但是,如果我在每個頁面上包含兩位代碼,但頁面沒有ID爲myFormID的表單,則會出現空錯誤。爲了嘗試解決這個問題,使插件負荷只有當以適當的形式存在,我想這一點:

<script> 
    if($('#myFormID').length) 
    { 
     $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() { 
      alert('Load was performed.'); 
     }); 
    }; 
</script> 

這太正常工作。但是,現在我無法弄清楚如何初始化validationEngine並將其綁定到表單。爲什麼這不起作用?

$.getScript('inc/formValidator/js/jquery.validationEngine.js', function() 
    { 
     $("#myFormID").validationEngine(); 
    }); 

我也試過這樣:

$.getScript('inc/formValidator/js/jquery.validationEngine.js', function() 
    { 
     $("#myFormID").load(function() 
     { 
      $(this).validationEngine(); 
     }); 
    }); 

沒有運氣。我得到這個錯誤:$(「#myFormID」)爲空。

想法?我幾乎已經禿頂了。這沒有幫助!

+0

原來這是來自另一個開發人員添加的腳本的原型衝突。 – technoTarek 2011-01-27 21:03:52

回答

0

原來這是從其他開發人員添加了一個腳本原型衝突。

<script> 
    if($('#myFormID').length) 
    { 
     $.getScript('inc/formValidator/js/jquery.validationEngine.js', function() { 
      $("#myFormID").validationEngine(); 
     }); 
    }; 
</script> 
0

您可以在所有頁面中包含js,但只有在表單存在時才調用validationEngine。 就像是:

<script src="inc/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script> 

 
$(document).ready(function() { 
if($('#myFormID').length) 
    { 
    $("#myFormID").validationEngine(); 
    } 
}); 

+0

謝謝,但在每個頁面中包含js都會導致錯誤 - 這顯然是原始驗證腳本的問題,但這不在我的控制範圍之內。我剛剛發現,我上面的代碼不起作用的原因是由於另一個開發人員添加的腳本產生了Prototype衝突。然而,再次感謝。 – technoTarek 2011-01-27 21:03:31

相關問題