Входные флажки не проверяются при загрузке страницы; но проверяется после использования "alert ()" - PullRequest
0 голосов
/ 13 июля 2011

У меня есть таблица со списком из 5 элементов, которая генерируется динамически с использованием AJAX с бэкэндом PHP / MySQL. Каждый элемент имеет флажок INPUT рядом с ним.

При загрузке страницы некоторые флажки должны отображаться как «отмеченные» в зависимости от набора значений, возвращаемых PHP / MySQL. Таким образом:

var checked_items = [];
// var checked_items = new Array(); // this is not working either
var GetItemsFromXML;
var SplitItems;
var XMLItemsObj = new Object;

// function...
function DisplayItems() {

 CreateRObj(function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {

  GetItemsFromXML=xmlhttp.responseText; // returns pike delim list

  SplitItems = GetItemsFromXML.split("|"); // split at pike

  // status - either "all" or "selected"
   XMLItemsObj.checkedstatus = SplitItems[0];

  // drop last ","
  SplitItems[1] = SplitItems[1].substr(0,SplitItems[1].lastIndexOf(","));

  // split at comma and pass to variable
  checked_items = SplitItems[1].split(","); 

   }
 });

 xmlhttp.open("POST","loaditems.php",true);
 xmlhttp.send();
} 

На данный момент, переменная «checked_items» содержит значения, возвращаемые PHP / MySQL. Эти значения будут определять, какой флажок снят.

Я подтвердил, что эта переменная заполняется путем тестирования, чтобы увидеть, если она пуста (""), undefined или ноль.

Теперь, когда страница загружается, приведенный ниже код перебирает все флажки и проверяет их в зависимости от состояния «XMLItemsObj.checkedstatus». Если статус «выбран», то отмечаются только некоторые из них. Если статус «все», все флажки должны быть сняты.

Вот код, который делает это:

if (XMLItemsObj.checkedstatus=="selected") {
  for (i=0; i < checked_items.length; i++) {
   $(":checkbox[value="+checked_items[i]+"]").attr("checked",true);
  }

} else if (XMLItemsObj.checkedstatus=="all") {

  $("input:checkbox").each(function() {
   $("input:checkbox").attr("checked",true);
  });
}

Здесь вещи начинают становиться странными ...

Вышеуказанное работает только тогда, когда я использую функцию "оповещения" проверить значения в переменной «checked_items». Оно работает когда ".checkedstatus" равен "all" или когда он "выбран".

Таким образом, если бы я использовал, например, этот код:

alert("The values of the checked_items variable are: "+checked_items);

Тогда приведенный выше код будет отлично работать.

Однако иначе это не работает. Ни когда статус "все", ни когда когда статус «выбран».

Я в растерянности, но я предполагаю, что переменная либо теряет свою значение или событие (я) не запускаются. Однако я не уверен.

У кого-нибудь есть идеи? Все комментарии, идеи, решения и мысли Добро пожаловать Заранее спасибо!

1 Ответ

0 голосов
/ 13 июля 2011

Вот ловушка Upon page load, some of the checkboxes must appear "checked" Убедитесь, что ваш скрипт выполняется при создании целевой структуры DOM. Тогда это должно сработать.

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