【问题标题】:CSS buttons in Loop循环中的 CSS 按钮
【发布时间】:2014-03-23 11:18:44
【问题描述】:

我有这个 CSS 用于单选按钮。

input[type=radio]:checked + .selectionName{
    border:4px solid #fcaf17;
}

在我看来,这段代码效果很好:

<label class="option" for="option2" class="col-xs-12 col-sm-12 col-md-12">
    <input id="option2" type="radio" name="option" value="Loved Quality of Purchase" />
    <div class="selectionName"></div>
</label>
<label class="option" for="option3">
    <input id="option3" type="radio" name="option" value="Someone solved my Problem" />
    <div class="selectionName"></div>
</label>
<label class="option" for="option4">
    <input id="option4" type="radio" name="option" value="Other" />
    <div class="selectionName"></div>
</label> 

但是当我将视图代码放入循环时它停止工作:

<?php foreach ($options as $option) : ?>
<label class="option" for="option1">
    <input id="option1" type="radio" name="option" value=<?php echo $option['title'] ?> />
    <div class="selectionName"><?php echo $option['title']; ?></div>
</label>
<?php endforeach; ?>

在循环中,只有第一个单选按钮选项是可点击的并显示边框。

单选按钮的更多 css 代码:

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

input[type=radio]{
    cursor:pointer;
    border:4px solid transparent;
    width: 20px;
    height: 20px;
    border: 1px solid black;
    display: block;
}

input[type=radio]:checked + .selectionName{
    border:4px solid #fcaf17;
}

如何解决这个问题以在循环中工作

【问题讨论】:

  • foreach 循环生成什么 html 代码?
  • foreach 代码打印单选按钮列表。因此,对于循环中的每个项目,都会为该项目显示一个单选按钮
  • ID 必须是唯一的。
  • 看起来你的 foreach 循环只生成带有 label id=1 的按钮,但我认为这只是一个问题,如果你想用按钮而不是样式做一些事情。
  • 请展示PHP代码输出的HTML代码。

标签: php html css loops radio-button


【解决方案1】:

看起来你的 foreach 循环只生成带有label id=1 的按钮。由于 CSS id 需要唯一,因此仅识别第一个元素。尝试在 foreach 循环中更改变量名。

<? var i = 1; ?>

<?php foreach ($options as $option) : ?>
<label class="option" for="option + <?php i ?>">
    <input id="option + <? i ?>" type="radio" name="option" value=<?php echo $option['title'] ?> />
    <div class="selectionName"><?php echo $option['title']; ?></div>
</label>
<?php i++ ?>
<?php endforeach; ?>

我不会说 php,所以你可能需要稍微改变一下语法。

【讨论】:

  • 刚刚得到了类似的东西。我设置了一个计数器并随着循环递增
【解决方案2】:

我认为你有一个错字:

<input id="option1" type="radio" name="option" value=<?php echo $option['title'] ?>/>

应该是:

<input id="option1" type="radio" name="option" value="<?php echo $option['title'] ?>"/>

您缺少“”。

希望这会有所帮助。

【讨论】:

  • 谢谢。这并没有真正造成问题。它无助于解决问题。不过谢谢
猜你喜欢
  • 2018-05-02
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2017-04-03
  • 2014-08-15
相关资源
最近更新 更多