GetScriptコールバック内でjQuery関数を初期化できないのはなぜですか?
-
26-10-2019 - |
質問
私の特定の質問/問題は、セドリック・デュガスのjQuery検証プラグインのv1.7の実装に関係しています(http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/#comments)、しかし、この問題は他の状況に簡単に一般化できると思います。
通常、次のスクリプトを次のようにロードします。
<script src="inc/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script>
次に、プラグインを初期化するために、次のことを行います。
<script>
$(document).ready(function() {
$("#myFormID").validationEngine();
});
</script>
「myformid」の値を持つID属性を持つフォームがあり、スクリプトはフォームフィールドを検証します。これは機能します。
ただし、すべてのページに2ビットのコードを含めるが、ページにはmyFormidのIDがあるフォームがない場合、nullエラーが発生します。この問題に対処し、適切なフォームが存在する場合にのみプラグインをロードするために、これを試しました。
<script>
if($('#myFormID').length)
{
$.getScript('inc/formValidator/js/jquery.validationEngine.js', function() {
alert('Load was performed.');
});
};
</script>
それも正常に機能します。しかし、今では、検証エンジンを初期化してフォームにバインドする方法を理解できません。なぜこれが機能しないのですか?
$.getScript('inc/formValidator/js/jquery.validationEngine.js', function()
{
$("#myFormID").validationEngine();
});
私もこれを試しました:
$.getScript('inc/formValidator/js/jquery.validationEngine.js', function()
{
$("#myFormID").load(function()
{
$(this).validationEngine();
});
});
運はありません。このエラーが発生します:$( "#myformid")はnullです。
アイデア?私はそれがほぼbalえます。これは助けにはなりません!
解決 2
他の開発者が追加したスクリプトからのプロトタイプの競合であることがわかりました。本質的に間違ったものは何もありませんでした
<script>
if($('#myFormID').length)
{
$.getScript('inc/formValidator/js/jquery.validationEngine.js', function() {
$("#myFormID").validationEngine();
});
};
</script>
他のヒント
すべてのページにJSを含めることはできますが、フォームが存在する場合にのみValidationEngineを呼び出します。そのように:
<script src="inc/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script>
$(document).ready(function() { if($('#myFormID').length) { $("#myFormID").validationEngine(); } });
所属していません StackOverflow