Birden değerleri seçin hatası

1 Cevap php

Ben kullanıcı multi-select alanında seçeneklerin X miktarı kadar seçmenize olanak sağlayan bir form var. Kullanıcı, ister ve son seçilen öğeyi de-seçer X öğeleri daha büyük bir öğe seçer.

Uyarı mesajı bir önceki çoklu seçim tarafından atılmış bir sorun var.

Form 4 mult seçer, bu yüzden eğer onun üçüncü mult-seçin veya maksimum numara zaten tarafından ulaşıldı atılmış bir önceki bir sonraki çoklu seçmek ne olursa olsun kullanıcının seçtiği olsun için hata atmak olacaktır mult-seçin Doğru numara.

Burada bir kod parçacığı olduğunu. Sayfada seçer geri kalanı aynı şekilde inşa ancak farklı isimler kullanımı vardır:

<select multiple name="seasons[]" size="6" id="seasons" onChange="countSelected(this,5)">
<option value=0>Hold CTRL to select more than one</option>
<?
  $ftw = mysql_query("SELECT s.seasonId, s.type FROM seasons s ORDER BY s.seasonId ASC");
  while ($line = mysql_fetch_array($ftw)) {
     $queried = mysql_query("SELECT seasonId FROM selectedSeason where seasonId = '$line[0]' AND id = '$objItem->itemId'");
      if(mysql_fetch_row($queried))
         echo "<option selected value=\"$line[0]\">". $line[1] ."</option>";
      else 
         echo "<option value=\"$line[0]\">". $line[1] ."</option>";
   }
?>
</select>

Burada uyarmak için javascript:

var selectedOptions = [];

function countSelected(select,maxNumber){
   for(var i=0; i<select.options.length; i++){
     if(select.options[i].selected && !new RegExp(i,'g').test(selectedOptions.toString())){
        selectedOptions.push(i);
     }

     if(!select.options[i].selected && new RegExp(i,'g').test(selectedOptions.toString())){
      selectedOptions = selectedOptions.sort(function(a,b){return a-b});
       for(var j=0; j<selectedOptions.length; j++){
         if(selectedOptions[j] == i){
            selectedOptions.splice(j,1);
         }
       }
     }

     if(selectedOptions.length > maxNumber){
      var throwAlert = true;
        select.options[i].selected = false;
        selectedOptions.pop();
     }
   }

     if(throwAlert == true){
        alert('You may only choose '+maxNumber+' options!!');
        document.body.focus();
     }
}

mevsim [] bu yüzden PHP birden fazla değer gönderebilir mevsim olması gerekir. Ben hiçbir sorun gönderme ya da sadece javascript ile veri alma var. Hata IE, FF ve Safari'de oluşur ama ne yazık ki ... Chrome değil.

Herhangi bir fikir çok değerli olacaktır.

1 Cevap

i u hatları üzerinde çok boyutlu bir dizi içine bir şey selectedOptions yapmak gerekiyor sanırım

selectedOptions[0][0] /// indicating to first select box option 1
selectedOptions[0][1] /// indicating to first select box option 2

bu satırlarda bir şey çalışması gerekir.

Edit: if you want to do it the quick and dirty way have selectedOptions1[] selectedOptions2[] etc and use an if else statement to work with the correct array at the start of the js function.