2017-01-23 3 views
0

Hallo Ich entwickle eine Jquery-Anwendung, wo ich eine Dropdown-Liste und Gridview habe. Die erste Spalte von gridview enthält Ankreuzfelder und oben die Schaltfläche check all. Wenn ich zum Beispiel drei Zeilen innerhalb der Gridview überprüfe, müssen die entsprechenden Werte in der Dropdown-Listbox deaktiviert werden. Ich versuche es wie folgt. Dies ist der Code, um alle geprüften Werte aus Gridview zu erhalten.Wie verstecken Sie die Werte in jquery ausgewählten Dropdownliste?

var checkedValues = []; 
     $("#<%=gdvRegretletter.ClientID %> tr").each(function() { 
      if($(this).closest('tr').find('input[type="checkbox"]').prop('checked', true)) 
      { 
       checkedValues += $(this).val(); 
      } 
     }); 

Sobald i Werte in Array erhalten und wenn ich ich habe unten Code Dropdown gehen.

$('.limitedNumbSelect').change(function (e) { 

     $("#limitedNumbSelect > option").each(function() { 
     //if (this.value == checkedValues) If this.value is equal to any value from checkedValues then i want to hide that value inside dropdownlistbox. 

      // Here i want to hide all values of checkedValues array(values will be same in dropdownlistbox) 
     }); 
}); 

Ich versuchte wie folgt.

$('.limitedNumbSelect').change(function (e) { 
      var checkedValues = []; 
      $("#<%=gdvRegretletter.ClientID %> tr").each(function() { 
       if ($(this).closest('tr').find('input[type="checkbox"]').prop('checked', true)) { 
        checkedValues.push($(this).closest('tr').find('td:eq(2)').text().trim()); 
       } 
      }); 
      $(".limitedNumbSelect > option").each(function() { 
       var val = $(this).val(); 
       alert(val); 
       var display = checkedValues.indexOf(val) === -1; 
       $(this).toggle(display); 
       $('.limitedNumbSelect option[value=' + display + ']').hide(); 
       $(".limitedNumbSelect").find('option:contains(' + display + ')').remove().end().chosen(); 
      }); 
     }); 

Im obigen Code gibt es einen Fehler. Wenn ich zum Beispiel einen Wert aus der Gridview wähle, kann ich, wenn ich auf das Dropdown-Menü klicke, diesen Wert auswählen (beim ersten Klick). Bei einem zweiten Klick wird der erforderliche Wert ausgeblendet.

Der obige Code funktioniert nicht. Array checkedValues ​​erfasst keine Werte.

Ich kann nicht herausfinden, was ich innen schreiben soll. Jede Hilfe wäre willkommen. Vielen Dank.

Antwort

1

versuchen, etwas wie folgt aus:

$('.limitedNumbSelect').change(function (e) { 
    $("#limitedNumbSelect > option").each(function() { 
     var val = $(this).val(); 
     var display = checkedValues.indexOf(val) === -1; 
     $(this).toggle(display); 
    }); 
}); 
+0

Danke. Problem ist $ ("# <% = gdvRegretetter.ClientID%> tr"). Je (function() { if ($ (this) .closet ('tr'). Find ('eingabe [typ = "checkbox"] ') .prop (' checked ', true)) { checkedValues ​​+ = $ (dieses) .val(); } }); Das funktioniert nicht. –

0

Ersetzen Sie die Zeile:

checkedValues += $(this).val(); 

In dieser Zeile:

checkedValues.push($(this).val()); 
+0

Hallo danke. das funktioniert. Das Problem ist, sobald ich eine Option aus der Dropdown-Liste auswähle, wird der entsprechende Wert sofort ausgeblendet. Wann immer ich auf drodpwn klicke, wird es sich nicht verstecken. Sollte ich click-Ereignis verwenden, bevor ich durch Optionen gehe? –

Verwandte Themen