2013-03-14 5 views
1

Вот проблема: я пытаюсь проверить и снять флажки с помощью группы.Я не могу установить глобальную переменную в следующем коде. Что я делаю не так?

Так что, если вы выберете G1 и G2, оно выдает сообщение о том, что вы не можете смешивать группы. Если вы снимете все из них, я пытаюсь очистить существующую группировку, и там, где код, похоже, терпит неудачу.

Любые мысли? (Также, я мог бы быть с неправильное представление о том, что глобальной переменной в самом начале. Поэтому, пожалуйста, предложить)

<HTML> 
<script language="javascript"> 
var prodSel=""; 
function VerifyGroup(a,b) 
    { 
    ClearAllSelectionsA(); // check if this is the last unselect and clear the prodSel variable 
     if (prodSel == "") 
      { 
       prodSel = a; 
      }else 
      { 
      if (prodSel != a) 
       { 
       alert ("Please ensure that the groups are same for the items you select"); 
       //alert(b); 
       document.getElementById(b).checked = false; 
       } 
      } 

} 

function ClearAllSelections() 
{ 
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
     for (var i = 0; i < inputs.length; i++) 
      { 
       if (inputs[i].type == "checkbox") 
        { 
         inputs[i].checked = false; 
        } 
      } 
prodSel=""; // Clear the variable; allow new selections 
} 

/*loop through and if all of them are unchecke,d clear the variable*/ 
function ClearAllSelectionsA() 
{ 
var clre = true; 
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
     for (var i = 0; i < inputs.length; i++) 
      { 
       if (inputs[i].type == "checkbox") 
        { 
         if (inputs[i].checked){clre= false;} 
        } 
      } 
      if (clre){ 
prodSel=""; // Clear the variable; allow new selections 
alert(window.prodSel); 
} 
} 
</script> 
<body> 


G1<input type="checkbox" value="zxc" id="12" onclick="javascript:VerifyGroup('g1',12);"><BR> 
G1<input type="checkbox" value="zxcw" id="123" onclick="javascript:VerifyGroup('g1',123);"><BR> 
G1<input type="checkbox" value="zxcdw" id="124" onclick="javascript:VerifyGroup('g1',124);"><BR> 
G2<input type="checkbox" value="zxcf" id="125" onclick="javascript:VerifyGroup('g2',125);"><BR> 
G2<input type="checkbox" value="zxcfg" id="126" onclick="javascript:VerifyGroup('g2',126);"><BR> 
<a href="#" onclick="ClearAllSelections();">clear group</a> 
</body> 
</html> 
+0

ОК, теперь мы знаем, что вы хотите. Код, который вы опубликовали, делает это? Если нет, то что работает по-другому, чем вы думали? – Steve

+0

Нет, код не очищает группировку при последнем снятии флажка. Поэтому вызов функции ClearAllSelectionsA не позволяет сбросить переменную до "". поэтому я должен вручную включить четкую функцию. – schar

+0

Я думаю, что это может иметь какое-то отношение ко всему, что ваш идентификатор является числовым. Попробуйте положить письмо перед всеми вашими идентификаторами и передать новую строку в качестве второго параметра в 'VerifyGroup'. [Атрибут id должен содержать букву] (http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html/79022#79022) – jonhopkins

ответ

1

При вызове ClearAllSelectionsA, если все флажки бесконтрольно, то prodSel очищается. Затем обратно в VerifyGroup, prodSel немедленно перенаправляется на a. Моя рекомендация состояла бы в том, чтобы вернуть true или false из ClearAllSelectionsA и действовать исходя из этого значения.

<script language="javascript"> 
var prodSel=""; 
function VerifyGroup(a,b) 
{ 
    var cleared = ClearAllSelectionsA(); // check if this is the last unselect and clear the prodSel variable 
    if (prodSel == "" && !cleared) //only reset prodSel if there is a checkbox checked 
    { 
     prodSel = a; 
    }else 
    { 
     if (prodSel != a) 
     { 
      alert ("Please ensure that the groups are same for the items you select"); 
      //alert(b); 
      document.getElementById(b).checked = false; 
     } 
    } 
} 

function ClearAllSelections() 
{ 
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
    for (var i = 0; i < inputs.length; i++) 
    { 
     if (inputs[i].type == "checkbox") 
     { 
      inputs[i].checked = false; 
     } 
    } 
    prodSel=""; // Clear the variable; allow new selections 
} 

/*loop through and if all of them are unchecke,d clear the variable*/ 
function ClearAllSelectionsA() 
{ 
    var clre = true; 
    var inputs = document.getElementsByTagName("input"); 
    var cbs = []; 
     for (var i = 0; i < inputs.length; i++) 
     { 
      if (inputs[i].type == "checkbox") 
      { 
       if (inputs[i].checked){clre= false;} 
      } 
     } 
     if (clre){ 
      prodSel=""; // Clear the variable; allow new selections 
      alert(window.prodSel); 
     } 
     return clre; 
    } 
</script> 
Смежные вопросы