Div点击相同的单选按钮?

时间:2011-06-14 22:53:13

标签: php jquery forms

有没有办法让div上的click事件与表单环境中的单选按钮相同?我只想让下面的div提交值,单选按钮很难看

enter image description here

代码输出如下:

<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date">8</input></li><li id="li-2011-06-09" class=" "><input id="radio-2011-06-09" value="2011-06-09" type="radio" name="radio_date">9</input></li><li id="li-2011-06-10" class=" "><input id="radio-2011-06-10" value="2011-06-10" type="radio" name="radio_date">10</input></li><li id="li-2011-06-11" class=" end "><input id="radio-2011-06-11" value="2011-06-11" type="radio" name="radio_date">11</input></li><li id="li-2011-06-12" class=" start "><input id="radio-2011-06-12" value="2011-06-12" type="radio" name="radio_date">12</input></li><li id="li-2011-06-13" class=" "><input id="radio-2011-06-13" value="2011-06-13" type="radio" name="radio_date">13</input></li><li id="li-2011-06-14" class=" "><input id="radio-2011-06-14" value="2011-06-14" type="radio" name="radio_date">14</input></li><li id="li-2011-06-15" class=" "><input id="radio-2011-06-15" value="2011-06-15" type="radio" name="radio_date">15</input></li><li id="li-2011-06-16" class=" "><input id="radio-2011-06-16" value="2011-06-16" type="radio" name="radio_date">16</input></li><li id="li-2011-06-17" class=" "><input id="radio-2011-06-17" value="2011-06-17" type="radio" name="radio_date">17</input></li><li id="li-2011-06-18" class=" end "><input id="radio-2011-06-18" value="2011-06-18" type="radio" name="radio_date">18</input></li><li id="li-2011-06-19" class=" start "><input id="radio-2011-06-19" value="2011-06-19" type="radio" name="radio_date">19</input></li><li id="li-2011-06-20" class=" "><input id="radio-2011-06-20" value="2011-06-20" type="radio" name="radio_date">20</input></li><li id="li-2011-06-21" class=" "><input id="radio-2011-06-21" value="2011-06-21" type="radio" name="radio_date">21</input></li><li id="li-2011-06-22" class=" "><input id="radio-2011-06-22" value="2011-06-22" type="radio" name="radio_date">22</input></li><li id="li-2011-06-23" class=" "><input id="radio-2011-06-23" value="2011-06-23" type="radio" name="radio_date">23</input></li><li id="li-2011-06-24" class=" "><input id="radio-2011-06-24" value="2011-06-24" type="radio" name="radio_date">24</input></li><li id="li-2011-06-25" class=" end "><input id="radio-2011-06-25" value="2011-06-25" type="radio" name="radio_date">25</input></li><li id="li-2011-06-26" class=" start "><input id="radio-2011-06-26" value="2011-06-26" type="radio" name="radio_date">26</input></li><li id="li-2011-06-27" class=" "><input id="radio-2011-06-27" value="2011-06-27" type="radio" name="radio_date">27</input></li><li id="li-2011-06-28" class=" "><input id="radio-2011-06-28" value="2011-06-28" type="radio" name="radio_date">28</input></li><li id="li-2011-06-29" class=" "><input id="radio-2011-06-29" value="2011-06-29" type="radio" name="radio_date">29</input></li><li id="li-2011-06-30" class=" "><input id="radio-2011-06-30" value="2011-06-30" type="radio" name="radio_date">30</input></li><li id="li-" class=" inactive"></li><li id="li-" class=" end inactive"></li></ul><div class="clear"></div></div>    

6 个答案:

答案 0 :(得分:15)

这可以在没有Javascript的情况下完成,但你必须放弃div。

您可以使用<label>代码而不是<div>,并使用CSS隐藏单选按钮。

例如:

<input type="radio" id="foo" /><label for="foo">Bar</label>

在CSS中:

input[type=radio] {
   display:none;
}

请注意,<label>标记默认为内联,<div>为块级元素,因此您可能需要稍微移动一下CSS。

答案 1 :(得分:7)

您可以隐藏单选按钮,如果单击div,则会在隐藏的单选按钮上触发单击事件。当然,您需要处理自己选择的日期。

我准备了一个小型演示: http://jsfiddle.net/roberkules/4xK86/

答案 2 :(得分:2)

只需关闭单选按钮可见性并将单击事件绑定到每个div / tds /无论将(现在不可见)单选按钮设置为“已检查”。您需要向用户提供某种可见的指示,即选择日期,并且您需要添加逻辑,以便在选中另一个时“取消选择”div / td / whatever。

答案 3 :(得分:1)

这些方面的内容如何:

$('div', '#calendar')
  .find(':radio')
  .attr('checked', 'checked')
  .trigger('change');

其中'#calendar'是日历的ID值。这假设单选按钮位于相关div中。触发器('change')将调用已绑定到该单选按钮的任何事件。

您还可以使用标签并将日期编号标记为标签。可以使用FOR属性将标签链接到表单输入。输入需要匹配的ID属性。

答案 4 :(得分:1)

因为在您的情况下,您只能选择一个日期。我会做以下

  1. 创建隐藏的输入 - 您可以将其命名为selectedItem
  2. 删除所有这些单选按钮,然后只使用div。对所有div使用相同的类。
  3. 编写将绑定所有div(基于该类)的jQuery来监听click事件。当该事件发生时,更新该隐藏输入字段的值。
  4. 希望有所帮助。

答案 5 :(得分:1)

基本上你将不得不添加一个隐藏字段来保存日期,但只要你能够点击div被点击的日期,你就是金色的。您只需将值推送到onclick处理程序上的隐藏字段。

<input type="hidden" name="date" id="date"/>
<!-- Begin Calendar -->
    <!-- Begin Calendar Cell -->
        <div class="calendarCell">
            <span class="date">#</span>
        </div>
    <!-- End Calendar Cell -->
<!-- End Calendar -->

<script type="text/javascript">
    $('.calendarCell').each(function(){
        $(this).click(function(){
            $('#date').val($(this).find('.date').html());
        });
    });
</script>