установите флажок в JQuery - PullRequest
       0

установите флажок в JQuery

0 голосов
/ 02 августа 2011

У меня здесь есть несколько флажков. просто так:

<div id = 'fCheck'> 
  <input type="checkbox" id="mango" value="mango" /> <label>MANGO</label><br>
  <input type="checkbox" id="santol" value="santol" /> <label>SANTOL</label><br>
  <input type="checkbox" id="guava" value="guava" /> <label>GUAVA</label><br>
  <input type="checkbox" id="lomboy" value="lomboy" /> <label>LOMBOY</label><br>
  <input type="checkbox" id="apple" value="apple" /> <label>APPLE</label><br>
  <input type="checkbox" id="orange" value="orange" /> <label>ORANGE</label><br>
</div>

и у меня также есть эти данные:

SupplierID     fruit_name       Granted
   10792        "mango"           "Y"
   10792        "santol"          "Y"
   10792        "guava"           "N"
   10792        "lomboy"          "N"
   10792        "apple"           "Y"
   10792        "orange"          "Y"

Теперь я пытаюсь сделать так, чтобы каждый раз, когда я вводил этот идентификатор поставщика 10792 (через вызов ajax), все плоды, которые имеют Y в предоставленном поле, будут отображаться в поле проверки выше, а N останется без проверки. Можете ли вы помочь мне? Проверка флажков на основе granted yes or no является проблемой. спасибо

Мой вызов ajax:

var params = {
  "SessionID": $.cookie("SessionID"),
  "dataType":"data"
};
$.ajax({
  type: 'GET',
  url: 'processjson.php?' + $.param({path:'supplier/view',json:JSON.stringify(params)}),
  dataType: primeSettings.ajaxDataType,
  success: function(data) {
    if ('error' in data)
    {
      showMessage('ERROR: ' + data["error"]["msg"]);
    }
    else{ 
      $.each(data['result']['main']['rowdata'], function(rowIndex, rowDataValue) {
      var groupFlag=0;
        $.each(rowDataValue, function(columnIndex, rowArrayValue) {
          var fldName = data['result']['main']['metadata']['fields'][columnIndex].name;
          if (fldName == 'supplier_id'){
            supplierID = rowArrayValue; //alert(rightCode);
            if (supplierID == SupID){//check if the supplier found
              groupFlag=1;
            }
          }
          if (fldName == 'fruit_name'){
            fruitname = rowArrayValue;
          }
          if (fldName == 'granted'){
            grant = rowArrayValue;
            if (groupFlag ==1){
              if (hasRight == 'y')
              $('#dialogUserGroupEdit').append('<input type="checkbox" id="'+ rightGroupCode +'" value="'+ rightDesc +'" /> <label>'+rightDesc+'</label><br>');
              //must check the checkbox here that have the same fruit_name in the html

            }
          }
        });
      });
    }
  }      
}) 

Ответы [ 5 ]

1 голос
/ 04 августа 2011

Я понял это сейчас. Вот что случилось. Каждый раз, когда я вводю ' идентификатор поставщика ', он будет вызывать мой ajax и проверять мою таблицу поставщиков (только под этим идентификатором), если фрукты предоставлены или нет. Если я вижу фрукт, которому предоставлено , он зациклит все флажки, которые у меня есть, и проверит fruitsID , если он существует. Если найден, то флажок будет установлен.

вот мой ответ, который очень мне подходит:

               $("input:checkbox").each(function(){
                  if ($(this).attr("id") ==  fruitName){
                     $(this).attr("checked",true);
                  }                                     
               });

А вот мой полный вызов ajax.

var params = {
  "SessionID": $.cookie("SessionID"),
  "dataType":"data"
};
$.ajax({
  type: 'GET',
  url: 'processjson.php?' + $.param({path:'supplier/view',json:JSON.stringify(params)}),
  dataType: primeSettings.ajaxDataType,
  success: function(data) {
    if ('error' in data)
    {
      showMessage('ERROR: ' + data["error"]["msg"]);
    }
    else{ 
      $.each(data['result']['main']['rowdata'], function(rowIndex, rowDataValue) {
      var groupFlag=0;
        $.each(rowDataValue, function(columnIndex, rowArrayValue) {
          var fldName = data['result']['main']['metadata']['fields'][columnIndex].name;
          if (fldName == 'supplier_id'){
            supplierID = rowArrayValue; //alert(rightCode);
            if (supplierID == SupID){//check if the supplier found
              groupFlag=1;
            }
          }
          if (fldName == 'fruit_name'){
            fruitname = rowArrayValue;
          }
          if (fldName == 'granted'){
            grant = rowArrayValue;
            if ((groupFlag ==1) && (granted == 'Y')){
               $("input:checkbox").each(function(){
                  if ($(this).attr("id") ==  fruitName){
                     $(this).attr("checked",true);
                  }                                     
               });
            }

          }
        });
      });
    }
  }      
}) 
0 голосов
/ 02 августа 2011

Вам нужно будет отсканировать вашу таблицу и установить флажок для каждой найденной строки.

$('#table tr').each(function() {
   var name = $(this).find('td.eq(2)').text();
   var granted = $(this).find('td.eq(3)').text();

   var chk = $('#fCheck #'+name); //$('#fCheck input[value="'+name+'"]');

   if (granded.toLowerCase() == 'y') {
      chk.attr('checked', true);
   } else {
      chk.removeAttr('checked');
   }
});

Обратите внимание, что при этом выбирается каждая строка таблицы, вам нужно сузить этов строки, содержащие только идентификатор вашего поставщика в первом столбце, если таблица содержит больше строк.

0 голосов
/ 02 августа 2011
IF Granted="Y"
<input checked="checked" />

просто добавьте флажок = "флажок" везде, где вы хотите установить флажок по умолчанию.

0 голосов
/ 02 августа 2011

Вы можете попробовать это (не проверено) -

   $.each(results, function() {
       if (this.Granted === 'Y') $('input:checkbox[id=' + this.fruit_name  + ']').attr('checked',true);
    });
0 голосов
/ 02 августа 2011

При создании разметки для этих флажков вы можете добавить атрибут selected = "selected в тег ввода для тех элементов, для которых Granted ==" Y ". Это не нужно делать через jquery при загрузке страницы.

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