Отправить форму WordPress, если выбранное значение изменяется без кнопки - PullRequest
1 голос
/ 12 июня 2011

Я пытаюсь отправить форму без кнопки отправки.Эта форма принимает значения из пользовательских полей в WordPress, отображая результаты на другой странице.Я пробовал с обычной функцией javascript onchange, и ничего не происходит, я тоже пробовал с функциями ... Кто-нибудь знает, что с этим не так или есть лучший способ ее решить?Это может быть что-то, связанное с Wordpress, или метод post?Это код формы:

<form method="get" name="form" action="/busqueda/" >
        <div class="search">

            <select class="styled" name="author"  onChange="this.form.submit();">
            <option value="-1" selected>Authors</option>    
            <?php
            $metakey = 'author';
            $autores = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
            if ($authors) {
            foreach ($authors as $author) {
            echo "<option VALUE=\"" . $author . "\">" . $author . "</option>";
                                    }
                            }
                ?>
            </select>
        </div><!-- #search1 -->

</form>

Кстати, форма отлично работает при отображении результатов с помощью стандартной кнопки отправки.Любой намек на то, что может быть не так, приветствуется.Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

Попробуйте это:

<form method="get" name="form" action="/busqueda/" >
        <div class="search">

            <select class="styled" name="author" onChange="document.forms['form'].submit();">

            <?php
            $metakey = 'author';
            $autores = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
            if ($authors) {
            foreach ($authors as $author) {
            echo "<option VALUE=\"" . $author . "\">" . $author . "</option>";
                                    }
                            }
                ?>
            </select>
        </div><!-- #search1 -->

</form>

Обновлено с помощью jQuery submit

Обновленная форма:

<form id="authorForm" method="get" name="form" action="/busqueda/" >
        <div class="search">

            <select id="author" class="styled" name="author">
                <option value="default">Choose an author...</option>
                <?php
                $metakey = 'author';
                $autores = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
                if ($authors){
                    foreach ($authors as $author) {
                        echo '<option value="' . $author . '">' . $author . '</option>';
                    }
                }
                ?>
            </select>
        </div><!-- #search1 -->

</form>

Обработка событий изменения скрипта jQuery и отправка формы:

<script type="text/javascript">
$(document).ready(function(){
    $('#author').change(function(){
        if($(this).val() !== 'default'){
            $('#authorForm').submit();
        }
    }); 
});
</script>

Вы можете протестировать jQuery из события отправки при выпадении

0 голосов
/ 13 июня 2011

Я надеюсь, что вы корректно извлекаете значение после публикации через $ _GET, потому что когда я запускаю код в своем браузере, значение передается в URL довольно хорошо. Проверьте код поиска и убедитесь, что вы используете $ _GET, а не $ _POST.

...