【发布时间】:2014-09-14 08:18:12
【问题描述】:
在根据表单的初始选择选项的值分离选择选项后,我无法弄清楚如何附加选择选项。
这是我的表单的 HTML:
<form id="booking-form" action="#" method="post">
<legend class="bold">Bookings</legend>
<div class="input clearfix required">
<label for="cinema">Cinema</label>
<select name="cinema" id="cinema">
<option value></option>
<option value="maxima">Cinema Maxima</option>
<option value="rivola">Cinema Rivola</option>
</select>
<div class="error">
<p>Please select a cinema</p>
</div>
</div>
<div class="input clearfix required">
<label for="day">Day</label>
<select name="day" id="day">
<option value></option>
<option value="monday">Monday</option>
<option value="tuesday">Tuesday</option>
<option value="wednesday">Wednesday</option>
<option value="thursday">Thursday</option>
<option value="friday">Friday</option>
<option value="saturday">Saturday</option>
<option value="sunday">Sunday</option>
</select>
<div class="error">
<p>Please select a time</p>
</div>
</div>
<div class="input clearfix required">
<label for="time">Time</label>
<select name="time" id="time">
<option value></option>
<option value="12">12pm</option>
<option value="3">3pm</option>
<option value="4">4pm</option>
<option value="6">6pm</option>
<option value="7">7pm</option>
<option value="9">9pm</option>
</select>
<div class="error">
<p>Please select a time</p>
</div>
</div>
<div class="input">
<input type="submit" value="Submit">
</div>
</form>
这是我编写的 jQuery 代码:
$(document).ready(function(){
// ***** Begin Booking Form Manipulation ***** //
// If Cinema Maxima is selected, remove Cinema Rivola time options
$('#cinema').change(function() {
if( $('#cinema').val() == 'maxima') {
$('#time option[value="12"]').detach();
$('#time option[value="4"]').detach();
$('#time option[value="7"]').detach();
}
// Else, remove Cinema Maxima time options
else {
$('#time option[value="3"]').detach();
$('#time option[value="6"]').detach();
$('#time option[value="9"]').detach();
}
});
// If Cinema Maxima is selected but weekend session is not selected, remove 3pm time option
$('#day').change(function() {
if( $('#cinema').val() == 'maxima' && $('#day').val() != 'saturday' || 'sunday') {
$('#time option[value="3"]').detach();
}
});
});
// ***** End Booking Form Manipulation ***** //
在过去几个小时浏览了 stackoverflow 之后,我不确定我是否正在以最好的方式解决这个问题,但我似乎找不到解决方案!对初学者的任何建议将不胜感激!
我已经在这里将我的代码上传到 jsfiddle:http://jsfiddle.net/nness/L9v6ejvt/
您难道不知道吗?使用 Chrome 时,.show() 和 .hide() 在我的 PC 上似乎可以完美运行!还有其他人在 Mac 上使用 Chrome 吗?.. 如果是这样,有什么想法为什么它会播放吗?最可悲的是,如果我从一开始就使用 PC,这将为我节省一天中最好的时间!谢谢大家的建议,非常感谢!
【问题讨论】:
-
隐藏或取消隐藏然后使用
.hide()和.show() -
这是我最初尝试做的,但没有任何成功(使用 chrome)...这将是最简单的解决方案!
-
为我工作。我刚刚注意到你在小提琴中的内容 - 我很快就会看看。注意
.detach()不是一个好的解决方案,因为您需要将每个选项分配给一个变量,以便以后可以.append()它。 -
Created new fiddle - 适用于电影院,但我不确定您使用
$('#day').change(..功能想要达到什么目的 -
关于如何让它在 Chrome 上工作有什么想法吗?.. 这在 Firefox 上很有效(尚未测试 Safari)......但我需要这个才能在 Chrome 上工作,由于某种原因它没有!为回答您的问题,我们只在周六和周日举行下午 3 点的会议。
标签: jquery html forms select options