单击标签不会检查单选按钮

时间:2013-07-17 12:03:07

标签: html css forms

我正试图通过设置这样的html来制作颜色选择器:

<ol class="kleurenkiezer list-reset clearfix">
    <li>
        <input type="radio" id="kleur_wit" name="kleurenkiezer" value="wit">
        <label for="kleur_wit" style="background: white;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_creme" name="kleurenkiezer" value="creme">
        <label for="kleur_creme" style="background: #fffceb;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_lichtbruin" name="kleurenkiezer" value="lichtbruin">
        <label for="kleur_lichtbruin" style="background: #968272;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_bordeauxrood" name="kleurenkiezer" value="bordeauxrood">
        <label for="kleur_bordeauxrood" style="background: #941514;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_oudgroen" name="kleurenkiezer" value="oudgroen">
        <label for="kleur_oudgroen" style="background: #7fa298;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_lichtblauw" name="kleurenkiezer" value="lichtblauw">
        <label for="kleur_lichtblauw" style="background: #487eae;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_oudgeel" name="kleurenkiezer" value="oudgeel">
        <label for="kleur_oudgeel" style="background: #b79130;"></label>
    </li>
    <li>
        <input type="radio" id="kleur_zwart" name="kleurenkiezer" value="zwart">
        <label for="kleur_zwart" style="background: #000;"></label>
    </li>
</ol>

我要做的是让实际的单选按钮对用户不可见,并使标签可点击,以便我有一个整齐的彩色方块列表,您可以选择其中一个。现在我的单选按钮似乎没有被检查..为什么会这样?

我的css:

.kleurenkiezer {
        width: 165px;
        margin-left: -10px;
        float: right;
    }

.kleurenkiezer li {
    position: relative;

    width: 45px;
    height: 45px;
    margin: 0 0 10px 10px;
    border: 1px solid #bbbbbb;

    float: left;
}

.kleurenkiezer li input {
    position: absolute;
    top: 10px;
    left: 10px;

    z-index: 1000;
}

.kleurenkiezer li label {
    position: absolute;
    top: 0;
    left: 0;

    width: 43px;
    height: 43px;
}

4 个答案:

答案 0 :(得分:2)

真正古老问题的新答案.. :)不确定它是不是你的情况,但是当我点击有2个重复表格的页面上的标签时,我会尝试同样的问题,其中一个2永远隐藏。一个用于移动设备的页面区域,另一个用于桌面设备。

首先在html流程中出现的一个正常工作,另一个没有。假例子,见js小提琴:

<input type="radio" id="value-1" name="sort"/>
<label for="value-1">value 1</label>
<input type="radio" id="value-2" name="sort"/>
<label for="value-2">value 2</label>


<input type="radio" id="value-1" name="sort"/>
<label for="value-1">value 1</label>
<input type="radio" id="value-2" name="sort"/>
<label for="value-2">value 2</label>

https://jsfiddle.net/stratboy/8ua16gm3/1/

所以现在,对我来说,这里的诀窍是找到避免形式重复的方法。

答案 1 :(得分:0)

单选按钮对我有用。 您可以在css display:none中设置输入复选框:

.kleurenkiezer input[type=radio] {
  display:none
}

答案 2 :(得分:0)

对于同样的事情(颜色选择器),我使用了另一种方法,我觉得它更简单。只需用一个按钮列表替换你的表单,然后在你传递颜色的地方构建1个函数。它是这样的:

<li class="color-box"><button type="button" class="color-btn" style="background-color:#BDC3C7;" onclick="wFontColour('#BDC3C7')"></button></li>

然后在你的函数中,你用这种颜色做任何你需要的东西,在我看来是这样的:

function wFontColour(fontColour) {
    document.execCommand("foreColor", false, fontColour);
};

如果你想保留你的方法,请给你的标签一个id并试试这个:

$('#myLabel').each('click', function(){
   $(this).closest('input:radio').attr('checked', 'checked');
});

答案 3 :(得分:0)

将属性设置为选中状态将不允许在再次单击时重新选中。它只会工作一次。尝试以下代码

$(document).on('click','li label', function(){
   $(this).closest('li').find('input:radio').trigger('click');
});