JavaScript ~ Мне нужно отключить 2 флажка, когда выбран третий флажок - PullRequest
0 голосов
/ 26 октября 2011

Мне нужен checkBox 3, чтобы отключить checkBox 1 и 2, когда он выбран.Код работает, когда у меня есть onClick в 3-м флажке, но мой ведущий программист хочет onClick в коде JavaScript выше.Я не очень хорош с JS, поэтому я не знаю точно, почему он не работает.Это то, что я до сих пор:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Content-Script-Type" content="text/javascript">
<meta name="Content-Style-Type" content="text/css">
<title>Example</title>

<SCRIPT TYPE="text/javascript">
<!--

var field = document.getElementById("check_1157");
if (field)
{
  function update1157Box(contactMethod)
  {
    var contactMethod = document.getElementById("check_1157");

    if(contactMethod.check_1157.checked)
    {
      //enable the not to receive information
      contactMethod.check_1156.disabled =true;
      contactMethod.check_1156.checked = false;
      contactMethod.check_1158.disabled =true;
      contactMethod.check_1158.checked = false;
      return;
    }
  }

  field.onClick = update1157Box(this.form)

  //the not to receive information
  contactMethod.check_1156.checked = false;
  contactMethod.check_1156.disabled = false;
  contactMethod.check_1158.checked = false;
  contactMethod.check_1158.disabled = false;
}

//-->
</SCRIPT>

</head>
<body>

<form>
  <div class="many-from-many">
    <label style="display: block;"><input id="check_1156"
     name="answers[166][]" value="1156" type="checkbox">Check Box 1</label>
    <label style="display: block;"><input id="check_1158"
     name="answers[166][]" value="1158" type="checkbox"> Check Box 2</label>
    <label style="display: block;"><input id="check_1157"
     name="answers[166][]" value="1157" type="checkbox">Check Box 3</label>
  </div>
</form>
</body>
</html>

Ответы [ 3 ]

1 голос
/ 26 октября 2011

jQuery превращает обработчики событий в кусок пирога:

$('#check_1157').click(function() {
    if ($(this).prop('checked')) {
        $('#check_1156, #check_1158').prop({
            checked: false,
            disabled: true
        });
    } else {
        $('#check_1156, #check_1158').prop({disabled: false});
    }
});
0 голосов
/ 26 октября 2011

Мой подход применен к подходу Фабиана, я хотел бы сделать что-то подобное, так как у вас есть div вокруг блока из трех флажков, называемых много-из-многих, при этом будут искать (родительские <lable>) узлы ( родительский <DIV>) третьего флажка и затем найдите дочерние узлы (флажки)

<form>
  <div class="many-from-many"><label style="display: block;"><input id="check_1156"name="answers[166][]" value="1156" type="checkbox">Check Box 1</label><label style="display: block;"><input id="check_1158"name="answers[166][]" value="1158" type="checkbox">Check Box 2</label><label style="display: block;"><input id="check_1157"name="answers[166][]" value="1157" type="checkbox" onclick="togTopTwo(this)">Check Box 3</label></div>
</form>

.

 function togTopTwo(c){
    var mm = c.parentNode.parentNode;
    var xx = mm.firstChild.firstChild;
    var secondOfMany = xx.parentNode.nextSibling.firstChild;

    if(c.checked){
       xx.disabled=true;
       secondOfMany.disabled = true;
   }else{
       xx.disabled=false;
       secondOfMany.disabled =false;
   }

 }
0 голосов
/ 26 октября 2011

Поскольку решение Эрика использует jQuery, вот альтернатива на чистом JavaScript:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Content-Script-Type" content="text/javascript">
<meta name="Content-Style-Type" content="text/css">
<title>Example</title>

<SCRIPT TYPE="text/javascript">
<!--

var toggle_list = ['check_1156', 'check_1158'];


function toggle(checkbox) {
    if (checkbox.disabled) {
        checkbox.removeAttribute('disabled');
    } else {
        checkbox.setAttribute('disabled', true);
    }
}

function toggleActivation() {
    for (var i=0; i<toggle_list.length; i++) {
        var id = toggle_list[i];
        var checkbox = document.getElementById(id);
        toggle(checkbox);
    }
}

//-->
</SCRIPT>

</head>
<body>

<form>
  <div class="many-from-many">
    <label style="display: block;"><input id="check_1156"
     name="answers[166][]" value="1156" type="checkbox">Check Box 1</label>
    <label style="display: block;"><input id="check_1158"
     name="answers[166][]" value="1158" type="checkbox"> Check Box 2</label>
    <label style="display: block;"><input id="check_1157"
     name="answers[166][]" value="1157" type="checkbox" onchange="toggleActivation()">Check Box 3</label>
  </div>
</form>
</body>
</html>

Это может быть небезопасно для IE, так как я сейчас использую Linux.Если это не работает в IE, проблема будет в функции переключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...