0

这个问题为基础,我一直在尝试使用相关下拉框设置表单。用户从下拉框 1 中选择他们想要的信息会话,隐藏的下拉框将显示该(并且仅该)信息会话的相关日期。有 2 个(最初是隐藏的)下拉框,显示哪个取决于用户在第一个下拉框中选择的内容。

它在视觉上有效,但在尝试发布数据时效果不佳。从我通过 Firebug 可以看出,“禁用”在任何时候都不会从“真”改变,所以表单抱怨默认不是一个选项。firstChoice 选项失败,secondChoice 选项通过正常。

HTML

<div id="myQuestions">
<select id="QuestionOptions" class="required" name="SESHTYPE">
<option selected="selected" value="Default">Choose information session.</option>
<option value="firstChoice">First One</option>
<option value="secondChoice">Second One</option>
</select>
</div>
<div id="myAnswers">
<div id="firstChoice" disabled="true" style="display: none;">
<select id="mce-INFODATE" name="INFODATE">
<option value="Default">Please choose a date:</option>
<option value="7th March">Thursday, 7th March</option>
<option value="20th March">Wednesday, 20th March</option>
<option value="11th April">Thursday, 11th April</option>
</select>
</div>
<div id="secondChoice" disabled="true" style="display: none;">
<select id="mce-INFODATE" name="INFODATE">
<option value="Default">Please choose a date:</option>
<option value="16th April">Tuesday, 16th April</option>
</select>
</div>

Javascript

    jQuery(document).ready(function($) {
    $('#QuestionOptions').change(function () {
    $('#myAnswers > div').hide().prop("disabled", true);
    $('#myAnswers').find('#' + $(this).val()).show().prop("disabled", false);
    });
    });

编辑:多一点挖掘,我发现你不能像从这里一样在div 上使用 disabled ;使用 children() 会让我到达我想去的地方吗?

4

1 回答 1

0

首先,您不能有两个具有相同名称和 id 的选择,它们需要不同。

其次,不能禁用 a <div>,只能隐藏它,但可以禁用 a <select>。也许尝试类似:

$('#myAnswers > div').hide()
$('#myAnswers select').prop("disabled", true);
var selectedDiv = $('#myAnswers').find('#' + $(this).val());
selectedDiv.show()
selectedDiv.find('select').prop("disabled", false);
于 2013-02-12T07:17:39.170 回答