2017-02-08 3 views
0

Я работаю над приложением ReactJs, и я создал модальную форму. Мой вопрос выглядит следующим образом:Сделать клетку с надписью clickable

Form with images and radio buttons

За здесь все изображения связаны с отдельными кнопками радио, и это делает соответствующий выбор, когда пользователь нажимает на кнопку радио. Но я хочу, чтобы переключатель переключался, даже когда пользователь нажимает на изображение, а не прямо на переключателе, как я могу это сделать?

Мой HTML:


 
<div> 
 
    <div className="category-card"> 
 
    <label htmlFor="square"> 
 
     <div className="card-icon"> 
 
     <img src="/img/icons/recommendation/square.svg"/> 
 
     </div> 
 
    </label> 
 
    <div className="card-input"> 
 
     <input type="radio" name="categories" value="square" checked={this.state.filters.categories == "square"} onChange={this.handleFilterChange.bind(this)} id="square"/> 
 
    </div> 
 
    </div>

ответ

4

Вы можете использовать для с каждым атрибута по этикетки в тег. Таким образом, ярлык для определенное поле ввода квадрат Другими словами.

Надеюсь, это вам поможет.


 

 
<div> 
 
    
 
    <label for="square"> 
 
     <img src="/img/icons/recommendation/square.svg"/> 
 
    </label> 
 
    <input type="radio" name="categories" value="square" id="square"/> 
 
    
 
    <label for="square2"> 
 
     <img src="/img/icons/recommendation/square.svg"/> 
 
    </label> 
 
    <input type="radio" name="categories" value="square2" id="square2"/> 
 
    
 
</div>

+0

Но я уже использую атрибут for-attribute с каждым ярлыком. Я не думаю, что могу даже удалить свой div вокруг изображения, так как мне нужно его стиль svg – anonn023432

+3

@ anonn023432 Я ничего не знаю о 'React.js', но вы используете' htmlFor'. Ответ предполагает, что вы используете простой 'for'. –

+2

Ofc вы можете просто удалить свой 'div' и сделать метку' display: block; 'и назначить стили из div на нее. – connexo

0

Не знаю, как это работает в Реагировать, но вы должны быть в состоянии, чтобы переместить закрытия </label> тега:

<div> 
    <div className="category-card"> 
    <label htmlFor="square"> 
     <div className="card-icon"> 
     <img src="/img/icons/recommendation/square.svg"/> 
     </div> 
     <div className="card-input"> 
     <input type="radio" name="categories" value="square" checked={this.state.filters.categories == "square"} onChange={this.handleFilterChange.bind(this)} id="square"/> 
     </div> 
    </label> 
    </div> 
</div> 

Я также добавил, что, как представляется, отсутствует </div> в конце.

Смежные вопросы