Почему я не могу инициализировать функцию jQuery в рамках обратного вызова getScript?
-
26-10-2019 - |
Вопрос
Мой конкретный вопрос/проблема связана с реализацией v1.7 плагина проверки JQUERY Cedric Dugas (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», а скрипт проверяет поля формы. Это работает.
Однако, если я включаю два бита кода на каждую страницу, но на странице нет формы с идентификатором 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") null.
Идеи? Я почти лысый, как есть. Это не помогает!
Решение 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(); } });