Javascript jquery hide()不适用于IE和Safari,适用于FF
提前感谢您提供的任何帮助 我有一个表单,上面有一个日期选择器,所以如果你点击输入框,就会弹出一个漂亮的日历。单击日历中的特定日期,然后在输入框中填写日期 接下来,我有一个用于选择时间的输入框。根据一周中的哪一天,时间列表会发生变化。例如,如果选择星期五,则仅显示上午10点到下午1点的选项 我只在firefox中使用它。在IE和Safari上,如果选择一个星期五,它将显示上午9点到下午6点,这是默认设置。看来皮不起作用了 我在IE或safari的开发工具中没有看到任何错误消息 以下是HTML:Javascript jquery hide()不适用于IE和Safari,适用于FF,javascript,jquery,html,safari,Javascript,Jquery,Html,Safari,提前感谢您提供的任何帮助 我有一个表单,上面有一个日期选择器,所以如果你点击输入框,就会弹出一个漂亮的日历。单击日历中的特定日期,然后在输入框中填写日期 接下来,我有一个用于选择时间的输入框。根据一周中的哪一天,时间列表会发生变化。例如,如果选择星期五,则仅显示上午10点到下午1点的选项 我只在firefox中使用它。在IE和Safari上,如果选择一个星期五,它将显示上午9点到下午6点,这是默认设置。看来皮不起作用了 我在IE或safari的开发工具中没有看到任何错误消息 以下是HTML: &
<input alt="date" type="text" name="formfield_day" id="formfield_day" />
<select name="formfield_time" id="formfield_time" class="ri_field">
<option value="0" selected="selected">Time</option>
<option value="9 am" id="time9">9:00 AM</option>
<option value="10 am" id="time10">10:00 AM</option>
<option value="11 am" id="time11">11:00 AM</option>
<option value="12 pm" id="time12">12:00 PM</option>
<option value="1 pm" id="time1">1:00 PM</option>
<option value="2 pm" id="time2">2:00 PM</option>
<option value="3 pm" id="time3">3:00 PM</option>
<option value="4 pm" id="time4">4:00 PM</option>
<option value="5 pm" id="time5">5:00 PM</option>
<option value="6 pm" id="time6">6:00 PM</option>
</select>
下面是javascript:
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script>
$(document).ready(function(){
$("#formfield_day").datepicker({
beforeShowDay: nonWorkingDates,
minDate: 0,
maxDate: "+2m"
});
});
</script>
<script>
$( document ).ready(function() {
changeTime();
});
$('#formfield_day').bind('change', function(event) {
changeTime();
});
function changeTime() {
// var x = $('#formfield_day').val();
var currentDate = $( "#formfield_day" ).datepicker( "getDate" );
var weekday = new Array(7);
weekday[0]= "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
if (currentDate) {
var dayName = weekday[currentDate.getDay()];
hideAll();
if (dayName == "Tuesday") {
hideAll();
$('#time1').show();
$('#time2').show();
$('#time3').show();
$('#time4').show();
$('#time5').show();
$('#time6').show();
}
else if (dayName == "Friday") {
hideAll();
$('#time9').show();
$('#time10').show();
$('#time11').show();
$('#time12').show();
}
}}
function hideAll() {
$('#time1').hide();
$('#time2').hide();
$('#time3').hide();
$('#time4').hide();
$('#time5').hide();
$('#time6').hide();
$('#time7').hide();
$('#time8').hide();
$('#time9').hide();
$('#time10').hide();
$('#time11').hide();
$('#time12').hide();
}
</script>
有什么想法吗?如果能帮我找到这个错误,我将不胜感激 尝试使用
隐藏:
展示:
我相信你所做的是试图在选择中隐藏选项可能不是最好的方法,尝试为一周中的每一天创建一个选择,并相应地显示它们,如:
else if (dayName == "Friday") {
hideAll(); // hide all the selects
$('#fridaySelect').show(); // only shows friday select with all its valid options
谢谢您的建议,但不幸的是,这并没有解决问题。@aarr是表单上方的java脚本吗?对于css或jquery hide/show,它应该在表单之前,否则它不会影响它。是的,它在表单之前。我想它与IE和Safarit有关。这是一个非常有趣的想法。不幸的是,我不认为我能做到这一点,因为字段是由数据库生成的,它只需要一个值。我不确定创建7个不同的ID是否有效,但值得研究。试过之后我会给你回复的。谢谢隐藏选项元素并不是所有浏览器都能做到的;只是不能那样做。请看:答案是从2010年开始的,这在更新的浏览器中还没有被修复?修复意味着这是一个不符合标准的bug。然而,如果没有标准定义这种行为,那么每个浏览器都可以自由地实现他们认为正确的行为。同时,在2012年仍然是一个问题:我刚刚尝试将所有的.hide切换到.prop'disabled',true;如果你读过,OP特别指出.prop方法在所有浏览器中都不起作用。它基本上与您已经尝试使用的.hide没有太大区别。对不起,我没有解决方案给你。。。你必须根据每个浏览器一起破解一些东西。
$('#time1').css("display","block");
else if (dayName == "Friday") {
hideAll(); // hide all the selects
$('#fridaySelect').show(); // only shows friday select with all its valid options