2009-03-10 3 views
8

В HTML, у меня есть следующие радио выбора кнопкиКак сделать кнопку HTML Radio полужирным для выбора?

уплотнительного Выбор 1
уплотнительного Выбор 2
уплотнительного Выбор 3

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

Так, например, - если человек выбирает "Вариант 2", то кнопка выбор радио теперь будет выглядеть следующим образом:

о Выборе 1
о Выборе 2
о Выборе 3

Как это сделать? Я предполагаю, что нужно использовать JavaScript или CSS.

Заранее спасибо

UPDATE: Как бы реализовать решение "nickf" без использования JQuery?

+0

[эта страница] (http://stackoverflow.com/questions/1431726/css-selector-for-a-checked-radio-buttons-label) также дает очень простое, совместимое и не-js решение – kewlashu

ответ

2

Используйте событие OnChange вашего select, чтобы изменить стиль css выбранного элемента на жирный.

+0

Вы не можете использовать это, чтобы изменить стиль самой кнопки - только текстовая метка может быть изменена именно так. Если вы посмотрите на его вопрос, он, похоже, тоже хочет, чтобы маленький круг был смелым. –

0
<input type=button onClick="this.style.fontWeight=bold"> 

Это может сработать, я не испытал сам. Конечно, есть намного лучшие решения.

Если у вас есть JavaScript-фреймворк (например, jQuery), вставленный в ваш код, у него, вероятно, есть много функций, доступных для этого. Селекторы, стилисты, css-обработчики и многие другие.

Я предпочел бы предложить создать класс CSS, как это:

.felkover 
{ 
    font-weight: bold; 
} 

Затем просто добавить или удалить это определение в атрибуте класса любой данной кнопки.

+0

Можно выбрать клавиатуру. Вместо этого используйте событие onChange и проверьте свойство this.checked. – spoulson

+0

Кроме того, первое решение просто оставит все, что вы нажимаете, жирным шрифтом, а не разворачивать предыдущие выборы, как следует. – Kev

+0

Правильно. Я не думал об этом. nickf имеет лучшую реализацию выше. – pestaa

6

Вы можете попробовать сделать все с помощью CSS.

Я попробовал это, и это работает :

<input type="radio" name="choice" value="1" checked /><span>First choice</span> 
<input type="radio" name="choice" value="2" /><span>Second choice</span> 

input[type="radio"]:checked + span 
{ 
    font-weight: bold; 
} 

Объяснение: Это перехватывает все пролеты после ввода радио (тип = «Радио») и проверяется.

Я тестировал с Firefox 3 и IE7 и работал только с Firefox. (compatibility reference)

+0

сам элемент ввода не имеет никакого текста, чтобы сделать полужирным шрифтом. – nickf

+0

@nickf right, fixed, – mbillard

+0

Я изменил его, чтобы он работал, но он работает только в Firefox. – mbillard

4

Я хотел бы сделать что-то вроде этого:

<label><input type="radio" name="myRadio" value="1" /> One</label> 
<label><input type="radio" name="myRadio" value="2" /> Two</label> 
<label><input type="radio" name="myRadio" value="3" /> Three</label> 

с onchange обработчиком на каждый элемент, чтобы изменить класс CSS родительской наклейки.В JQuery это будет выглядеть следующим образом:

$(':radio').change(function() {   // get all the radio buttons and 
              // add an onchange handler 
    var $label = $(this).parent('label'); // get a reference to the parent label 
    if (this.checked) {     // if the radio is on... 
     $label.addClass('selected');  // add the CSS class "selected" to the label 
    } else {        // otherwise... 
     $label.removeClass('selected'); // take the class away. 
    } 
}); 

Просто помните, чтобы переопределить стиль по умолчанию для меток (который выделен жирным шрифтом):

label { 
    font-weight: normal; 
} 
label.selected { 
    font-weight: bold; 
} 
+0

Несмотря на отправку другого ответа, я думаю, что так оно и должно быть сделано. – defrex

+0

Как бы вы это сделали, не используя jQuery ??? – 2009-03-10 13:54:04

+0

Использование события onChange и проверка того, выбран ли переключатель. –

-1

развлекаться ваши кнопки имеют метки вокруг них, чтобы включить в текст, я добавит это в метки.

<label onchange="this.parent.children.fontWeight='normal';this.fontWeight='bold';"> 

Хотя в идеале я бы не поставил этот встроенный код, но подключить его к ним где-то в голове после загрузки страницы.

+0

Нет такого события, как HTMLLabelElement.onchange. – bobince

+0

lol, это абсолютно верно. Наверное, я не думал. – defrex

14

Вы можете сделать это чисто с помощью CSS, но вам нужно обернуть текст каждого входа в пролете или другой тег:

<input type="radio" name="group1" value="Milk"><span>Milk</span><br> 

Тогда просто использовать селектор родственный:

input[type="radio"]:checked+span { font-weight: bold; } 
+0

BTW, я тестировал это сейчас, и он работает, по крайней мере, в FF2. – Kev

+0

Согласно http://www.quirksmode.org/css/contents.html, он, вероятно, ничего не сделает (т. Е. Будет «деградировать изящно» :)) в IE6, но другие браузеры должны обрабатывать его в порядке. – Kev

+1

Вау, точно так же, как мой ответ – mbillard

0

Вот пример:

<script> 
    function makeBold() 
    { 
    var radios = document.getElementsByName("sex"); 
    for (var index = 0; index < radios.length; index++) 
    { 
     if (radios[index].checked) 
     { 
     document.getElementById("span_" + radios[index].value).style.fontWeight='bold'; 
     } 
     else 
     { 
     document.getElementById("span_" + radios[index].value).style.fontWeight='normal'; 
     } 
    } 
    } 
</script> 

<input type="radio" name="sex" value="male" onclick="makeBold();"> 
<span id="span_male">Male</span> 

<br> 
<input type="radio" name="sex" value="female" onclick="makeBold()"> 
<span id="span_female">Female</span> 

EDIT: Вы должны определить свой т ext spans с такими идентификаторами: span_

+0

Разве этот отскакивающий выбранный текст радиотекста в случае, если я изменю свой выбор ответа? – 2009-03-10 14:02:29

+0

да, скопируйте его в файл HTML и попробуйте :) – Canavar