Автозаполнение форм вордпресс

Я пытаюсь автоматически заполнить форму (в настоящее время использую контактную форму 7) с данными пользователя wordpress.

это текущий код:

<script type="text/javascript">
<?php 
    if (is_user_logged_in()){   
        global $current_user;
        get_currentuserinfo(); ?>
        document.getElementByName("your-name").value = "<?php $current_user->user_email ?>";
        <?php
    } ?>
</script>

Я использую плагин контактной формы 7, поэтому он вызывается через короткий код.

Кажется, с этим кодом ничего не происходит, но я заставил его повторить мне электронную почту пользователя, поэтому я не думаю, что это проблема с получением данных. Если бы мне пришлось делать ставки, то были бы проблемы с заполнением формы данными.

Я видел несколько плагинов автозаполнения для контактной формы 7, но я также хочу сделать это с другими формами (в частности, гравитационными формами), поэтому мне нужно универсальное решение.

Любая помощь приветствуется, спасибо.


person shahmeer navid    schedule 09.08.2011    source источник


Ответы (1)


Сначала убедитесь, что ваша контактная форма имеет HTML, например <input name='your-name' ...> Затем попробуйте поместить свой код в событие window.onload. Ваш javascript, вероятно, запускается до того, как страница закончила загрузку всего, включая вашу контактную форму.

Что-то вроде этого:

<script type="text/javascript">
window.onload = function () {
    document.getElementsByName("your-name")[0].value = "<?php $current_user->user_email ?>";
}
</script>

Изменить: исправлено в соответствии с комментариями ниже

person arunkumar    schedule 09.08.2011
comment
Спасибо за ответ, но это не работает. Я также убедился, что поле ввода, сгенерированное контактной формой 7, имеет значение вашего имени. - person shahmeer navid; 09.08.2011
comment
Какой браузер вы используете? Если Firefox или Chrome, используйте Firebug или встроенную консоль Javascript на любом из них и введите document.getElementByName("your-name").value = "abc";. Если это не сработает, попробуйте установить идентификатор для тега ‹input›. Как 2_. Теперь сделайте document.getElementById("your-name").value = "abc"; . Если ни один из них не работает, вам придется опубликовать больше кода вашей страницы, чтобы увидеть, что происходит. - person arunkumar; 09.08.2011
comment
Я использовал консоль на хроме, и она, похоже, не работала. Однако это сработало, когда я ввел getElementById(theId).value = abc;. На самом деле, getElementByName даже не кажется функцией, поскольку единственный поиск, который я выполнил, привел к getElementsByName (обратите внимание на s), и эта функция, похоже, только возвращает значение, не позволяя мне его изменить. Думаю, теперь мой вопрос будет заключаться в том, как я могу получить доступ к свойству имени формы? - person shahmeer navid; 09.08.2011
comment
Хорошо, попробуйте document.getElementsByName("your-name")[0].value = 'abc'; Функция возвращает коллекцию всех найденных тегов с атрибутом имени «ваше имя». - person arunkumar; 09.08.2011
comment
Да, это работает. Я предполагаю, что проблема заключалась в том, что я устанавливал массив равным чему-то, а не указывал конкретный элемент. Спасибо за помощь :) - person shahmeer navid; 09.08.2011