2017-07-04 3 views
2

Ich habe eine Seite mit einem Raster viel, wenn der Eingang mit „seltsamen Namen“ enthält, um ein Array zu simulieren:Wie wähle ich ein Element mit Sonderzeichen in der ID?

<input type="text" id="Punteggi[@counter].Descrizione" readonly="readonly" tabindex="-1" name="Punteggi[@counter].Descrizione" class="{validate: {required:true}}" value="@item.Descrizione" /> 

Wie kann ich den Wert dieser Eingänge mit jQuery gesetzt, speziell, wie würde ich sie wählen ? Ich habe es auf viele Arten versucht, aber nichts funktioniert.

Antwort

3

Das Problem ist, dass Klammern haben eine besondere Bedeutung in CSS (als Attributselektoren) und Punkte auch tun, als Klassen-Selektoren. Versuchen $.escapeSelector:

$('#' + $.escapeSelector('Punteggi[@counter].Descrizione')) 

Dies wird die Wahl entweichen, so dass die Sonderzeichen die Auswahl nicht beeinflussen. Sie könnten auch versuchen, ein Attribut Selektor und Verpackung mit, dass in Anführungszeichen:

$('[id="Punteggi[@counter].Descrizione"]') 

Dies wird buchstäblich, dass die ID übereinstimmen und wird nicht von den Sonderzeichen als Sonderzeichen behandeln.

+0

Ich wusste nicht, dass es einen Helfer dafür gab :) –

+0

WOW: die zweite Methode funktioniert! Danke ... Stunden kämpfen mit diesem ... –

+0

perfekte Antwort mit Erklärung !!! +1 :) – SagarPPanchal

0

Sie müssen die [, ], @ und . Zeichen im id Wähler entkommen. Um dies zu tun, verwenden Sie \\ wie folgt aus:

var val = $('#Punteggi\\[\\@counter\\]\\.Descrizione').val(); 
 

 
console.log(val);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="Punteggi[@counter].Descrizione" readonly="readonly" tabindex="-1" name="Punteggi[@counter].Descrizione" class="{validate: {required:true}}" value="@item.Descrizione" />

Verwandte Themen