Javascript 如何禁用div中的元素

Javascript 如何禁用div中的元素,javascript,html,css,Javascript,Html,Css,我对禁用DIV标记中的有一些问题 这是一个日历脚本,我用它来禁用一些,我用它来选择日期后的时间 我在某些日期禁用了时间选择,但禁用的div元素仍保持启用状态 这是代码 <script type="text/javascript"> var startDate; var endDate; var ONEDAY = 3600 * 24; function resetDates() { startDate = endDate = null; } function filterDate

我对禁用DIV标记中的有一些问题

这是一个日历脚本,我用它来禁用一些,我用它来选择日期后的时间

我在某些日期禁用了时间选择,但禁用的div元素仍保持启用状态

这是代码

<script type="text/javascript">

var startDate;
var endDate;
var ONEDAY = 3600 * 24;

function resetDates() {
startDate = endDate = null;
}

function filterDates1(cal) {
startDate = cal.date.getTime();
/* If they haven't chosen an 
end date before we'll set it to the same date as the start date This
way if the user scrolls in the start date 5 months forward, they don't
need to do it again for the end date.
*/

if (endDate == null) { 
    var day29 = document.getElementById("sel1").value;
    var day30 = document.getElementById("sel1").value;
    var day31 = document.getElementById("sel1").value;
    var day32 = document.getElementById("sel1").value;
    var day33 = document.getElementById("sel1").value;
    var day34 = document.getElementById("sel1").value;
    var day35 = document.getElementById("sel1").value;
        if(day29 == "29/12/2011")
        {
            document.getElementById("hours").className = "show";
            document.getElementById("hours1").className = "hide";

            document.getElementById("hours3").className = "hide";
            document.getElementById("hours4").className = "hide";
        }
        else if(day30 == "30/12/2011")
        {
            document.getElementById("hours").className = "show";
            document.getElementById("hours1").className = "hide";
            document.getElementById("hours3").className = "hide";
            document.getElementById("hours4").className = "hide";
        }
        else if(day31 == "31/12/2011")
        {
            document.getElementById("hours").className = "show";
            document.getElementById("hours1").className = "hide";
            document.getElementById("hours3").className = "hide";
            document.getElementById("hours4").className = "hide";
        }
        else if(day32 == "01/01/2012")
        {
            document.getElementById("hours").className = "show";
            document.getElementById("hours1").className = "hide";
            document.getElementById("hours3").className = "hide";
            document.getElementById("hours4").className = "hide";
        }
                                    else if(day33 == "02/01/2012")
        {
            document.getElementById("hours").className = "hide";
            document.getElementById("hours1").className = "hide";
            document.getElementById("hours3").className = "show";
            document.getElementById("hours4").className = "hide";
        }
                                    else if(day34 == "03/01/2012")
        {
            document.getElementById("hours").className = "hide";
            document.getElementById("hours1").className = "hide";
            document.getElementById("hours3").className = "show";
            document.getElementById("hours4").className = "hide";
        }
                                    else if(day35 == "04/01/2012")
        {
            document.getElementById("hours").className = "hide";
            document.getElementById("hours1").className = "hide";
            document.getElementById("hours3").className = "show";
            document.getElementById("hours4").className = "hide";
        }

        else
        {
            document.getElementById("hours1").className = "show";
            document.getElementById("hours").className = "hide";
            document.getElementById("hours3").className = "hide";
            document.getElementById("hours4").className = "hide";
        }

}
endDate = date.getTime();
}


/*
* This functions return true to disallow a date
* and false to allow it.
*/



/* 
* Can't choose days before today or before the
* end date
*/
function disallowDateBefore(date) {
date = date.getTime();
if ((startDate != null) && (date < (startDate - ONEDAY))) {
//start date can't be prior to end date
return true; 
} 
var now = new Date().getTime();
if (date < (now - ONEDAY)) {
//start date can't be prior to today
return true;
}

return false;
}

/* 
* Can't choose days before today or before the
* start date
*/
function disallowDateAfter(date) {
date = date.getTime();
if ((endDate != null) && (date > (endDate - ONEDAY))) {
//end date can't be before start date
return true;
} 

var now = new Date().getTime();
if (date < (now - ONEDAY)) {
//end date can't be prior to today
return true;
}
return false;
}

// end hiding contents from old browsers  -->



var cal = new Zapatec.Calendar.setup({

inputField     :    "sel1",   // id of the input field
button         :    "button1",  // What will trigger the popup of the calendar
ifFormat       :    "%d/%m/%Y",       //  of the input field: Mar 18, 2005
showsTime      :     false,          //no time
dateStatusFunc    :    disallowDateAfter, //the function to call
onUpdate       :    filterDates1

}); 

//]]></script>




<style>
.hide
{
    display: none; visibility:hidden;
}
.show
{
    display: block;
}
</style>
但在这段代码中,如何完全禁用非活动div


谢谢你

找到隐藏的div,循环遍历它们的子项并禁用它们

通过以下函数,可以指定div的父级可以是document,也可以是包含form或div的某个窗体,也可以是具有特定类名的元素的标记名,还可以指定一个表示是否启用或禁用其子级的标志:

function disableOrEnableChildren(rootElement, tagName, className, disable) {
   var els = rootElement.getElementsByTagName(tagName),
       i, j,
       r = new RegExp("(^| )" + className + "( |$)"),
       c;
   for (i = 0; i < els.length; i++)
      if (r.test(els[i].className)) {
         c = els[i].childNodes;
         for (j =0; j < c.length; j++)
            if (typeof c.disabled != "undefined")
                c.disabled = disable;
      }
}

disableOrEnableChildren(document, "div", "hide", true);

disableOrEnableChildren(document, "div", "show", false);

您不能禁用div,您可以通过将单个select元素的disabled属性设置为true来禁用它们:请尝试发布简明的代码示例。这使人们更容易回答您的问题。我有3个时间和日期字段:当用户选择例如31.12.2001时,时间选择标签被禁用,并启用其他时间选择表单,但每次当用户选择31.12.2011和其他部门选择例如12.00-16.00时,它是将第一个div的包含值发送给我:如果您不希望在提交请求时将selects的值发送到服务器,则必须在提交之前从表单中完全删除div,您可以侦听表单上的提交事件。但是这种逻辑在服务器上会更好。谢谢你的回答,先生>>!!!!这是一个密码。。这是真的吗www.amanor.ru/amanor.txt请告诉我,我必须在您的第一个函数脚本中更改什么才能使其工作?
    if(day29 == "29/12/2011" ||
       day30 == "30/12/2011" ||
       day31 == "31/12/2011" ||
       day32 == "01/01/2012")
    {
        document.getElementById("hours").className = "show";
        document.getElementById("hours1").className = "hide";
        document.getElementById("hours3").className = "hide";
        document.getElementById("hours4").className = "hide";
    }
    else if(day33 == "02/01/2012" ||
            day34 == "03/01/2012" ||
            day35 == "04/01/2012")
    {
        document.getElementById("hours").className = "hide";
        document.getElementById("hours1").className = "hide";
        document.getElementById("hours3").className = "show";
        document.getElementById("hours4").className = "hide";
    }
    else
    {
        document.getElementById("hours1").className = "show";
        document.getElementById("hours").className = "hide";
        document.getElementById("hours3").className = "hide";
        document.getElementById("hours4").className = "hide";
    }