js filter + php echo $ _POST

时间:2014-09-11 00:29:45

标签: javascript php jquery

我有两个选择列表(第一阶段和第二阶段)的php页面形式,有两种类型的值(值-A-1,值-A-2,值-A-3,值-B-1 ,值-B-2),以及我想要显示结果的另一个页面。当用户在第一阶段选择一种类型的值(例如值-A-1)时,在第二阶段他将只看到'A'类型的值。它已经通过javascript过滤器正常工作。但在他总结表格后,无法看到过滤选择列表的结果。当我关闭JS过滤时,结果显示相关,但当然,过滤不适用,用户可以从错误的选择列表中选择值。怎么解决这个?下面是一段代码:

page.php文件:

<form action="verify.php" name="form" id="form" method="post">
 <select id="FirstStage" name="FirstStage">
   <option value=""></option>
   <option value="value-A-1" id="A"> value-A-1</option>
   <option value="value-A-2" id="A"> value-A-2</option>
   <option value="value-A-3" id="A"> value-A-3</option>
   <option value="value-B-1" id="B"> value-B-1</option>
   <option value="value-B-2" id="B"> value-B-2</option>
   <option value="value-B-3" id="B"> value-B-3</option>
 </select>

 <select id="SecondStage" name="SecondStage">
  <option value="0"></option>
  <option value="z"></option>
  <option value="value-A-aaa" >value-A-aaa</option>
  <option value="value-A-bbb" >value-A-bbb</option>
  <option value="value-A-ccc" >value-A-ccc</option>
  <option value="value-A-ddd" >value-A-ddd</option>
  <option value="value-A-eee" >value-A-eee</option>
  <option value="value-B-xxx" >value-B-xxx</option>
  <option value="value-B-yyy" >value-B-yyy</option>
  <option value="value-B-zzz" >value-B-zzz</option>
 </select>

<input type="submit" name="sendform" id="submit" value="Send a form">

JS:

jQuery.fn.filterOn = function(selection, values) {
        return this.each(function() {
            var select = this;
            var options = [];
            $(select).find('option').each(function() {
                options.push({value: $(this).val(), text: $(this).text()});
            });
            $(select).data('options', options);
            $(selection).change(function(){
        $(selection + " option:selected").each(function(){
          var options = $(select).empty().data('options');
          var haystack = values[$(this).attr('id')];    
          $.each(options, function(i){
            var option = options[i];
            if($.inArray(option.value, haystack) !== -1) {
                        $(select).append(
                        $('<option>').text(option.text).val(option.value)
                        );
                    }
          });
        });
      });
        });
    };


$(document).ready(function(){
  $(function() {
        $('#SecondStage').filterOn('#FirstStage', {
            'A': ['value-A-aaa','value-A-bbb','value-ccc','value-A-ddd','value-A-eee','z'],
          'B': ['value-B-xxx','value-B-yyy','value-B-zzz','0']   

        });
      return true;
  });
  });

这是来自verify.php的简单代码

  <? mysql_query("INSERT INTO form ('FirstStage','SecondStage')"); ?>
   <? echo $_POST['FirstStage']?>
   <? echo $_POST['SecondStage']?>

还有JS Bin,以显示更容易理解过滤机制的样子。

在verify.php中,FirstStage正确回显,但只有当我将禁用js脚本时才使用SecondStage

如果JS过滤不可能得到回声结果,也许有人会建议我,我该怎么做才能在SecondStage中显示基于FirstStage的值?

0 个答案:

没有答案