关于根据另一个禁用一组复选框

时间:2011-10-05 00:27:46

标签: php javascript forms

首先发布在这里,我会尽量简单: 我需要创建一个表格,医疗会议的参与者注册课程,每个课程持续3个小时,所以一个想在上午10点开始上课的人不能注册到上午11点,下午12点和下午1点的课程,但他可以注册到下午2点等等。

每小时有3个不同的课程。

我以为使用javascript做这件事,但我绝对迷失了。

你能否告诉我如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:0)

快速简便的方法是设置一个javascript函数来运行onChange,禁用或启用其他复选框。你会做类似

的事情
 <input type="checkbox" onChange="enableDisable(11)" name="11" id="whatever">

你的javascript的伪代码是:

 //Declare function
 //Check the current id and get the next 3 IDs
 //Check the status of the currentid to find out if you checked or unchecked it
 //if you checked it, disable the next 3 ids
 //if you unchecked it, enable the next 3, dependant on whether any of the previous 3 values are checked

最后一步将会有点痛苦,但这是我如何解决它的基础

答案 1 :(得分:0)

您错过了问题要求中的一些重点。当用户在上午10点登记注册课程时,他们无法注册两组课程:

  • 第1组:上午11点至中午12点 - 下午1点
  • 第2组:上午9点 - 早上8点 - 早上7点

正如你所说,你对javascrip几乎是“空”,我只是出于概念目的编写了这些代码。

您需要做的第一件事是下载jquery.js文件(您可以在google的任何地方找到它),然后将该文件与register.php文件放在同一目录中。

代码在这里:

<input type="checkbox" value="10" name="convention_time"> 10 am<br>
<input type="checkbox" value="11" name="convention_time"> 11 am<br>
<input type="checkbox" value="12" name="convention_time"> 12 am<br>
<input type="checkbox" value="13" name="convention_time"> 1 pm<br>
<input type="checkbox" value="14" name="convention_time"> 2 pm<br>
<input type="checkbox" value="15" name="convention_time"> 3 pm<br>

<script>
$(function(){
    $('[name="convention_time"]').live('click',function(){
        var A=$(this);
        var method2call = A.is(':checked')?'attr':'removeAttr'
        var selector = '[name="convention_time"]:lt(3)'
        A.nextAll(selector).add( A.prevAll(selector) )[method2call]('disabled','disabled').attr('checked',false)
    })
})
</script>