我不是CakePHP和Javascript的老手,所以我在使用代码时遇到了麻烦。
我尝试做的是使用Formhelper创建下拉列表。有一个值显示另一个列表(例如:值1)。如果我选择"值1",将出现第二个下拉列表,如果我从第一个列表中选择另一个值,则不会出现第二个下拉列表。
到目前为止,这很好,这是有效的。问题是,如果我从第一个列表中选择另一个选项来隐藏第二个列表,当我再次显示第二个列表时,它不会重置第二个列表选项。
每次调用firstList中的onChange时,如何将所选选项重置为secondList中的空选项?
这是代码:
<script type="text/javascript">
function showSecondList(field) {
switch (field.val()) {
case 'value1':
$('#divSecondList').show();
$('#secondList').val("");
break;
default:
$('#secondList').val("");
$('#divSecondList').hide();
}
}
</script>
<div>
<?php $this->Form->input('firstList', array(
'label' => 'firstList',
'type' => 'select',
'empty' => '- select -',
'options' => array(
'value1' => 'value1',
'value2' => 'value2'
),
'onChange' => 'showSecondList($(\'#firstList\'));'
));
?>
</div>
<div id="divSecondList" style="display:none">
<?php echo $this->Form->input('secondList', array(
'label' => 'secondList',
'type' => 'select',
'empty' => '- select -',
'options' => array(
'value1' => 'value1',
'value2' => 'value2'
),
));
?>
</div>
答案 0 :(得分:0)
这似乎是JavaScript问题而不是Cake,所以让我将其重写为简单的HTML和JavaScript,以便您可以根据需要对其进行测试。如果它不在您的代码中,您是否可以在这些选择中附加一些其他JavaScript?或者你在控制台中看到任何错误吗?
function showSecondList(field) {
switch (field.val()) {
case 'value1':
$('#divSecondList').show();
$('#secondList').val("");
break;
default:
$('#secondList').val("");
$('#divSecondList').hide();
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<div class="control-group">
<label class="control-label" for="firstList">firstList</label>
<div class="controls">
<select name="data[firstList]" id="firstList" onchange="showSecondList($('#firstList'));">
<option value="">- select -</option>
<option value="value1">value1</option>
<option value="value2">value2</option>
</select>
</div>
</div>
</div>
<div id="divSecondList" style="display:none">
<div class="control-group">
<label class="control-label" for="secondList">secondList</label>
<div class="controls">
<select name="data[secondList]" id="secondList">
<option value="">- select -</option>
<option value="value1">value1</option>
<option value="value2">value2</option>
</select>
</div>
</div>
</div>