-1

请先查看我的客户网站以获得想法。

在上面的站点中,我在右侧有一个礼品盒。有 3 个选择框。目前我为这 3 个选择框使用 3 个表单,这意味着每个下拉选择框都嵌入到表单中。当您选择第一个下拉选择框时,它会选择一个,第二个选择框的值将确定从第一个选择框中选择哪个值。所以如果你选择Man,那么所有与Man相关的场合都将显示在秒下拉选择框中。它工作正常。

但问题是每次选择第一个下拉框时它都会刷新。

我不想刷新页面。它必须选择值并传递值,以便秒选择框可以确定其相关值。

所以我在想我们的ajax。但没有成功。

所以我为第一个下拉选择框包含了一些代码。

这是 html 和 php 和 wordpress 的混合。

<div class="select-one">

 <form id="searrec" method="post" action="">
    <select name="selectionRecipient" id="selectionRecipient" onchange="this.form.submit();"> 

            <?php 
                    $results_rec = get_option('current_recipient');
                    if(isset($_POST['selectionRecipient'])){
                        $results_rec = $_POST['selectionRecipient'];
                        update_option('current_recipient', $results_rec);
                        $results_rec = get_option('current_recipient');
                    }
            ?>
        <?php 
        //asort($result_rec);
        $t_name_arr = array();

        foreach($result_rec as $rec):
                $t_id = $rec->term_id;
                $term = get_term($t_id , 'category' );
                $t_name_arr[] = $term->name;
        endforeach;

        //print_r($t_name_arr);

        rsort($t_name_arr);

        foreach ($t_name_arr as $t_name):?><option class="rec_val"<?php if($results_rec==$t_name){ echo 'selected="selected"';}?>value="<?php echo $t_name;?>"><?php echo $t_name;?></option>
      <?php endforeach;?>

      </select> 
    <input type="hidden" id="submitrec" value="Search" />
    </form> -->

</div>

所以我正在使用表单方法 post 并使用$_POST来检索选定的值并将其传递给$results_rec变量。

稍后在代码中,我if.. else用于确定if $results_rec =='Man'然后显示与 Man 等相关的某些项目。

所以我想要的不是在我从第一个下拉选择框中选择项目时刷新页面。

请帮忙。

4

7 回答 7

1

改变这个:

<select name="selectionRecipient" id="selectionRecipient" onchange="this.form.submit();"> 

对此:

<select name="selectionRecipient" id="selectionRecipient"> 

和jQuery:

$("#searrec").submit(function(e) {
   e.preventDefault();

   // your code

   return false;
});

编辑:

使用它来获取选定的索引(数字)

var index = $("#selectionRecipient")[0].selectedIndex;

或价值:

var value = $("#selectionRecipient")[0].value;

然后你可以调用一个ajax:(假设另一个选择框有“id=other_select”

$.ajax({url:"index.php",type:"POST",data {type:"populate",index:2,value:"option1"},dataType:"json",
   success: function(data) {
      // data (json) returned from server so populate other selection boxes with that..
  // in this example 'data' is an array, coming directly from server (see below the .php)   
      $("#other_select")[0].selectedIndex = 0;
  for(var x in data) {
     $("#other_select")[0].options[x] = new Option(data[x]);
  }
   }
})

在您的 .php 中,我假设您获得了一个列表(等数据库)来填充另一个选择列表(在客户端)。此代码可能如下所示:

if (isset($_POST["type"]) && $_POST["type"]=="populate") {
   echo json_encode(array("option1","option2","option3"));
   exit(1);
}
于 2012-06-15T15:41:54.067 回答
0

伙计们,它是固定的。

请查看http://giftideasitems.com/

查看礼品盒,看看它是如何工作的。

我使用了 iframe 并嵌入了表单,在那里下拉编码。而已。

即使我使用了 onchange="this.form.submit()" 并且页面没有引用,实际上是页面刷新......但不是主页,只有 iframe 正在刷新,这很好。这正是我想要的。

<div id="gift-finder">
<div class="gift-finder-form">

            <iframe name="inlineframe" src="code.php" frameborder="0" 
                    scrolling="auto" width="200" height="180" 
                    marginwidth="0" marginheight="0" id="gift-iframe">
            </iframe>

</div>

这是我的 iframe 代码,请参阅 src,我使用了 code.php;所以所有代码都在不同的地方。

虽然我不得不修改一些css,但无论如何这很好。

感谢昨天贡献的每一个人。

于 2012-06-16T10:31:27.023 回答
0

您应该从组合框中删除事件onchange="this.form.submit();

并将 ajax 与 jquery 一起使用:

$("#searrec").onchange(function() {
    $.ajax({
        url:"",
        success:function(response){
            alert("success");
        }
    });
});
于 2012-06-15T15:56:23.710 回答
0
$('#searrec').submit(function () {
 //do some form submit work here
 return false;
});
于 2012-06-15T15:25:19.800 回答
0

您必须使用 AJAX 调用根据您在第一个选择框中选择的内容填充其他选择框,而无需重新加载页面。

我建议你看看 jQuery 的 AJAX 功能。继续阅读$.ajax$.post- 使用它们,您可以将您在第一个列表框中选择的值提交给 PHP 脚本,然后根据该值返回并填充其他选择框。

于 2012-06-15T15:30:21.137 回答
0

使用 AJAX 更新其他选择而不刷新页面。使用 jQuery 让 AJAX 变得简单。

这个问题会有所帮助: Change the selected value of a drop-down list with jQuery

于 2012-06-15T15:31:19.093 回答
0
$('#searrec').submit(function(e){

    e.preventDefault();

});
于 2012-06-15T15:40:29.217 回答