我有两个选择列表(第一阶段和第二阶段)的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的值?