0

我在下拉菜单中有一个由 Wordpress 生成的页面列表,点击后,如何提交表单并转到所选页面?

<form id="work" action="" method="post">
<select name="work">
    <?php $pages = get_pages(array('child_of' => '15', 'sort_column' => 'menu_order')); 
    foreach($pages as $post) {
    setup_postdata($post);
    $fields = get_fields(); ?>
        <option class="work-dropdown" value="<?php echo the_permalink(); ?>"><?php echo the_title(); ?></option>    
    <?php } wp_reset_query(); ?> 
</select>           
</form>

我尝试了这个 jquery,但我不确定这是否正确以及该采取什么行动:

<script type="text/javascript">
jQuery(document).ready(function( $ ) {
$('.work-dropdown').change(function() {
  $('#work').submit();
});
});
</script>
4

3 回答 3

1

如果您只是想重定向页面,请尝试:

<script type="text/javascript">
jQuery(document).ready(function( $ ) {
   $('select[name="work"]').change(function(){
        window.location = $(this).val();
    })
});
</script>

您可能想为选择添加一个 ID 以使 jQuery 选择器更快。因此,您将添加:id="page-redirect"将 jQuery 对象更改为选择$('#page-redirect')。ID 的选择比类或属性快得多。

如果您希望表单发布到选定的 URL,请尝试:

<script type="text/javascript">
jQuery(document).ready(function( $ ) {
    $('#work select[name="work"]').change(function(){
        $('#work').attr('action', $(this).val()).submit();
    });
});
</script>
于 2013-10-28T15:08:19.440 回答
0

.change()不能option像您所写的那样写在 ' 选择器上。它需要是select. 所以,$('[name=work]')需要成为你的选择器。

此外,您的链接似乎存在于选项的值中。下面的代码应该可以工作。

$('[name=work]').change(function() {
    window.location = $(this).val();
});

编辑:

如果您在提交时重置下拉列表,则无法提交然后重定向到页面。如果您需要提交并且您没有重置下拉列表然后根据 URL 或索引重定向,

$('[name=work]').change(function() {
    $('#work').submit();
});
//handle it on document ready & assuming your index's first option is plain text 'Select from below'
if($('[name=menu] :selected').index() > 0)
{
    window.location = $(this).val();
}
于 2013-10-28T15:10:56.527 回答
0
jQuery(document).ready(function ($) {
    $('.work-dropdown').change(function () {
        $('#work').attr('action', $(this).val());
        $('#work').submit();
    });
});

会这样做

于 2013-10-28T15:08:02.397 回答