2016-12-16 10 views
0

Ich habe eine bestehende Web-Anwendung. Jetzt habe ich ein besonderes Problem in Bezug auf einige Javascript. Ich habe eine Liste von Kontrollkästchen mit demselben Klassennamen, ID und Namen. Das bedeutet, dass alle Kontrollkästchen dieselbe Klasse, denselben Namen und dieselbe ID haben. Nur der Wert wird für jedes Kontrollkästchen unterschiedlich sein.Problem in Bezug auf ein Kontrollkästchen mit einem bestimmten Wert unter allen Kontrollkästchen mit derselben ID und Klasse mit Javascript

Der Code ist wie folgt:

<tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Austin Engineering" /></td> 
</tr> 

<tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" /></td> 
</tr> 
<tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Jeekay" /></td> 

</tr> 

Das Problem ist jetzt, dass durch Javascript, nachdem eine Bedingung überprüft ich das Kontrollkästchen mit einem bestimmten Wert zu setzen haben.

Ich habe die folgende Codezeile ausprobiert, aber es funktioniert nicht.

$("#brand_id_").attr("value",'FAG').attr("checked", true); 

Es wurde die erste Checkbox gesetzt. Und dieses Kontrollkästchen hat einen anderen Wert.

Bitte helfen Sie mir, eine Lösung dafür zu finden.

Vielen Dank im Voraus!

+1

mit der gleichen 'id' sind ungültig ... – kukkuz

Antwort

3

Verwenden Sie den Klassenselektor und prüfen Sie, ob das Attribut value angegeben ist.

$(".brand_tag[value='FAG']").attr("checked", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<tr> 
 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Austin Engineering" /></td> 
 
</tr> 
 

 
<tr> 
 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" /></td> 
 
</tr> 
 
<tr> 
 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Jeekay" /></td> 
 

 
</tr>

Obwohl dies aber bitte, dass das Element mit doppelter Ids bedeutet, dass Ihr HTML ist ungültig beachten Sie funktionieren wird. Versuche dies zu vermeiden.

2

können Sie versuchen, diese

$(".brand_tag[value=FAG]").attr("checked","checked"); 
0

Sie

$("input[type=checkbox][value='FAG']").prop("checked", true); 

Als Ihr Code attr verwenden können ("value", 'FAG') den Wert der Checkbox ändern

1

Zunächst alles, was Sie brauchen, um Ihre Kontrollkästchen mit verschiedenen IDs zu setzen, und dann können Sie entweder Klassenselektor oder ID-Selektor oder Tag-Selektor verwenden.

Wenn Sie den Wert und die geprüfte Eigenschaft aller Kontrollkästchen ‚FAG‘ und wahr jeweils festlegen möchten, verwenden Sie die folgenden Schritte aus:

$(".brand_tag").attr("value",'FAG').attr("checked", true); 

Wenn Sie die Eigenschaften für eine bestimmte Option festlegen möchten, verwenden Sie die ID-Selektor, nachdem Sie die IDs Ihrer Kontrollkästchen wie folgt ändern:

$("#NewID1").attr("value",'FAG').attr("checked", true); 

wo NewID1 die ID dieses spezifischen Kontrollkästchen ist, dass Sie seine Eigenschaften ändern möchten.

+0

Einstellung eindeutige ID ist nicht notwendig, denke ich. Ich habe den Vorschlag von @anu umgesetzt und es funktioniert gut. – Abhradip

+0

Ja das ist richtig anu Lösung ist perfekt. Sie können jedoch auch die IDs ändern und die ID des spezifischen Kontrollkästchens auswählen und die Attribute festlegen, anstatt nach dem Wertattribut zu suchen. Dies wird wie folgt aussehen $ ("# NewID1"). Attr ("checked", true); wobei die NewID1 die ID des Ankreuzfeldes mit der Eigenschaft value = 'FAG' ist –

+0

"Das globale ID-Attribut definiert eine eindeutige Kennung (ID), die im gesamten Dokument eindeutig sein muss eine Fragmentkennung), Scripting oder Styling (mit CSS). " https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id Viel Glück mit Ihrem Ansatz, bereit sein für die Überraschung – vadimk

0

meine Beispiele prüfen :-)

https://jsfiddle.net/6cz22b18/4/

<table id="brand_id_table"> 
    <tr> 
    <td><input type="text" id="txtInput" value="FAG"></td> 
    <td><button onclick="$.setCheckbox()">Check</button></td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Austin Engineering" />Austin Engineering</td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" />FAG</td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="Jeekay" />Jeekay</td> 
    </tr> 
    <tr> 
    <td><input class="brand_tag" id="brand_id_" name="brand_id[]" type="checkbox" value="FAG" />FAG</td> 
    </tr> 
</table> 

$.setCheckbox = function() { 
    // reset 
    $("#brand_id_table").find("input:checkbox").attr('checked', false); 

    // set checkbox 
    $("#brand_id_table").find("input:checkbox").each(function() { 
    if($(this).val() == $("#txtInput").val()) { 
     $(this).attr('checked', true); 
    } 
    }); 
} 
  1. ‚$ ("# brand_id_table").find ("input: checkbox") 'ist
  2. also muss man jede() Funktion verwenden, die wie' for statement 'aussieht.
Verwandte Themen