2016-07-07 3 views
2

Вопрос «Как сделать переключатель только для чтения?» уже задан n раз. Но решение всегда disabled="disabled".Как сделать кнопку радиона только для чтения, но не отключена?

(Там также может быть осложнена решения JavaScript, что работа с событием click или change и предотвращения изменить значение, но все, что имеет обычно запах более или менее грязный хак.)

Проблема/побочный эффект disabled="disabled" заключается в том, что он «удаляет» поле из набора данных и затем не отправляется на сервер.

Я хочу, чтобы переключатели были доступны только для чтения/не изменялись - но в то же время, чтобы они были отправлены на сервер в форме submit. disabled не соответствует этому требованию, readonly, похоже, не работает для переключателей.

Каков правильный атрибут HTML для создания кнопки только для чтения, не удаляя ее из набора данных формы?

+0

Почему бы просто не использовать изображение и скрытое поле? –

ответ

4

Попробуйте использовать некоторые CSS:

input[type="radio"].readonly { 
    opacity: 0.5; /* not necessary */ 
    pointer-events: none; 
} 
+0

Хотелось бы отметить, что 'pointer-events' имеет некоторые проблемы с IE (http://caniuse.com/#search=css%20pointer-events), но тогда почему вы должны использовать IE в первую очередь. – Th3Gam3rz

+0

действительно полезно .. – Mask5323

0

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

Предоставление атрибута radio buttonname, который присваивается ему отдельно, а также атрибут checked.

<input type="radio " name="my_radio_btn" value="its_value" checked /> 

Таким образом, пользователь не может снять его

+0

Благодарим вас за ответ, но 'checked' нуждается в значении -' checked' или пустой строке (s. [Спецификация] (https://www.w3.org/TR/html-markup /input.radio.html#input.radio.attrs.checked)). И 'checked =" "' не препятствует изменениям. – automatix

+0

Итак, вы нашли решение своего вопроса? –

+0

Нет, к сожалению, нет. Единственное чистое решение - это атрибут типа 'readonly'. Все остальное - более или менее грязное обходное решение. Но, похоже, не такой атрибут (пока). – automatix

0

Это может показаться немного Hacky, но вы можете просто установить значение кнопки радио, чтобы быть его исходное состояние, когда onclick события вызываются Это.

<!DOCTYPE html> 
 
<html> 
 
    <body> 
 
    <input id="button1" type="radio" onmouseover="setValue(this)" onclick="retainValue(this)" checked> Radio Example 
 
    <input id="button2" type="radio" onmouseover="setValue(this)" onclick="retainValue(this)"> Radio Example 
 
    <script> 
 
     var checkboxes = {}; 
 
     function setValue(el) { 
 
     if(!(el.id in checkboxes)) 
 
      checkboxes[el.id] = el.checked; 
 
     } 
 
     function retainValue(el) { 
 
     if(!(el.id in checkboxes)) 
 
      checkboxes[el.id] = el.checked; 
 
     el.checked = checkboxes[el.id]; 
 
     } 
 
    </script> 
 
    </body> 
 
</html>

Это позволяет иметь столько радиоприемников, как вы хотите на странице условии, что каждая из них имеет уникальный идентификатор.

Если вы хотите использовать jQuery, это было бы очень легко выполнить.

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

  • Нет связанных вопросов^_^