Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2012, 18:32
Интересующийся
Отправить личное сообщение для nraw Посмотреть профиль Найти все сообщения от nraw
 
Регистрация: 20.07.2012
Сообщений: 11

Как сделать input неактивным кроссбраузерно?
Здравствуйте. В форме нужно сделать несколько (не все) <input type="text"> неактивными. Сделал так:
if (document.getElementById("tb1").checked) {
document.getElementById("tbnum").disabled = false;
}
else {
document.getElementById("tbnum").disabled = true;
}

Это работает в Opera и FF, а в Chrome и IE нет.

А как сделать, чтобы было кроссбраузерно?
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2012, 18:41
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

nraw, в IE 8 и Chrome 20 все робит...
<html>
<head>
<title></title>
<script>
function a() {
if (document.getElementById("tb1").checked) {
document.getElementById("tbnum").disabled = false;
}
else {
document.getElementById("tbnum").disabled = true;
}
}
</script>
</head>
<body>
<input type="checkbox" value="asd" id="tb1" onClick="a()">
<input type="text" id="tbnum">
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2012, 19:04
Интересующийся
Отправить личное сообщение для nraw Посмотреть профиль Найти все сообщения от nraw
 
Регистрация: 20.07.2012
Сообщений: 11

Наверно, я не полностью сформулировал вопрос. В Chrome и IE сразу после загрузки страницы чекбокс не выделен и поле для текста активно, по крайней мере у меня именно так. Поле <input type="text"> становится неактивным, если поставить, а затем снять галочку.
Может я что-то не так делаю? Подскажите...
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2012, 19:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

nraw,
<script type="text/javascript">
function ONNnclick(){
  if (document.getElementById("tb1").checked) {// alert("A")
document.getElementById("tbnum").disabled=false;
  }
  else {
document.getElementById("tbnum").disabled=true;
  }
}
</script>


<input  id="tb1" type="checkbox"  checked="false" onclick="ONNnclick()" autocomplete="off"/>
<input  id="tbnum" type="text" value="Тра-та-та"/>
<script type="text/javascript">
document.getElementById("tb1").click()
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2012, 19:09
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от nraw Посмотреть сообщение
Наверно, я не полностью сформулировал вопрос. В Chrome и IE сразу после загрузки страницы чекбокс не выделен и поле для текста активно, по крайней мере у меня именно так. Поле <input type="text"> становится неактивным, если поставить, а затем снять галочку.
Может я что-то не так делаю? Подскажите...
<html>
<head>
<title></title>
<script>
function a() {
if (document.getElementById("tb1").checked) {
document.getElementById("tbnum").disabled = false;
}
else {
document.getElementById("tbnum").disabled = true;
}
}
</script>
</head>
<body>
<input type="checkbox" value="asd" id="tb1" onClick="a()">
<input type="text" id="tbnum">
<script>window.onload = a;</script>
</body>
</html>

либо так (18 строка), либо нарисуйте атрибут disabled у текстового поля изначально...
Ответить с цитированием
  #6 (permalink)  
Старый 20.07.2012, 19:41
Интересующийся
Отправить личное сообщение для nraw Посмотреть профиль Найти все сообщения от nraw
 
Регистрация: 20.07.2012
Сообщений: 11

Спасибо, получилось с атрибутом disabled.
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2012, 12:08
Интересующийся
Отправить личное сообщение для nraw Посмотреть профиль Найти все сообщения от nraw
 
Регистрация: 20.07.2012
Сообщений: 11

Еще возник вопрос. Если я таким образом пытаюсь включить несколько подряд инпутов, то это не работает. При этом работает, если ставить галки начиная от последнего элемента к первому по порядку. Работает только отдельно какой-либо из выбранных, а остальные неактивны. Как это реализовать?

Последний раз редактировалось nraw, 21.07.2012 в 12:27.
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2012, 12:36
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<div>
  <input type="checkbox">
  <input disabled>
  <input disabled>
  <input disabled>
</div>
<div>
  <input type="checkbox">
  <input disabled>
  <input disabled>
  <input disabled>
</div>


<script>
window.onload = function () {//onload begin

  document.body.onclick = function (e) {//onclick begin
    e = e || event;
    var target = e.target || e.srcElement;
 
    if (target.type == 'checkbox') {
      var inp = target.parentNode.children;
      var len = inp.length;
      if (target.checked == true) {
        for (var i = 1; i < len; i++) {
          inp[i].disabled = false;
        }
      } else {
        for (var i = 1; i < len; i++) {
          inp[i].disabled = true;
        }
      }
    }

  }//onclick end

}//onload end
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 21.07.2012, 14:02
Интересующийся
Отправить личное сообщение для nraw Посмотреть профиль Найти все сообщения от nraw
 
Регистрация: 20.07.2012
Сообщений: 11

У меня элементы input находятся в ячейках таблицы
<table>
<tr><td>Название</td><td>Значение</td><td>Количество</td></tr>
<tr>
<td>
<p><input type="checkbox" value="tb1" id="tb1"></p>
</td>
<td>
<p><input type="text" id="tb1val" disabled></p>
</td>
<td>
<p><input type="checkbox" value="num1" id="num1"><input type="text" id="tbnum1" disabled></p>
</td>
</tr>
<tr>
<td>
<p><input type="checkbox" value="tb2" id="tb2"></p>
</td>
<td>
<p><input type="text" id="tb2val" disabled></p>
</td>
<td><p><input type="checkbox" value="num2" id="num1"><input type="text" id="tbnum2" disabled></p>
</td>
</tr>
</table>
поэтому код не работает, а точнее работает частично (только в колонке "Количество"). Если я правильно понял, не работают эти строки?
var inp = target.parentNode.children;
      var len = inp.length;

Последний раз редактировалось nraw, 21.07.2012 в 14:18.
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2012, 14:28
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

elem.setAttribute('disabled', 'disabled'); // сделать неактивной
elem.removeAttribute('disabled'); // сделать активной
// кроссбраузерно
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать fullscreen -=1100=- Общие вопросы Javascript 8 30.07.2012 09:53
Как сделать неактивным HtmlEditor Megov ExtJS 3 04.04.2011 10:29
Как лучше сделать виджет? comentator Элементы интерфейса 0 25.03.2011 08:44
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55