2016-05-11 5 views
0

einen Wert zuzuweisen. Ich habe Mühe, herauszufinden, was hier falsch ist. Ich verwende Jquery, um ein div-Element zu erstellen, das mehrere untergeordnete Elemente enthält. Dieses div wird auf eine Schaltfläche klicken erstellt und hat eine ID durch eine Variable genommen:Problem beim Versuch, einem Eingabe-Tag anhand der ID

 operator_list = 'something'; 
     single_value_input = 'something_else'; 
     input = attribute_list + operator_list + single_value_input; 
     input_id = attribute_list; 

     // create input text area with id of the single value 
     $("#added_rules").append('<div class="input-group"><div class="input-group-btn" id="erase_query"><a href="#" class="btn btn-primary btn-mg" data-toggle="modal" data-target="#myModal" title="Help" ><span class="glyphicon glyphicon-minus"></span></a></div><input type="text" class="form-control" id="' + input_id + '" placeholder="" data-toggle="tooltip" title="" readonly></br></div>'); 

Dann versuche ich mithilfe von Jquery einige Werte innerhalb des Eingangs-Tag zu legen:

$("#" + input_id).val(input); 

Und es doesn arbeite nicht. Nichts passiert und ich bekomme keine Fehler im Entwickler-Tool. Die zugewiesene ID des Eingabe-Tags wird basierend auf der Benutzereingabe generiert und hat die Form: 'NAME_1> 24' Möglicherweise hängt das Problem mit den Escapezeichen zusammen.

Wenn ich versuche, der Eingabe-ID a zuzuweisen string statt ihm eine Variable zuzuweisen, dann funktioniert es. Aber das ist nicht was ich will.

+0

Ich hoffe, Sie haben eine 'var input_id' irgendwo in Ihrem Code – madalinivascu

+0

Ich deklariere input_id über die Frage. Sie sagen, dass ich es wie folgt deklarieren sollte: var input_id? Das würde es zu einer globalen Variable machen. Warum sollte ich das wollen? – user1919

+1

@dkar madalin sollte seinen Kommentar als * offtopic * (oder 'nicht verwandt') markiert haben, da es für die Frage nicht relevant ist. –

Antwort

2

Es funktioniert nicht, weil Ihre „ID“ CSS-Selektoren enthält, die $("#"+selector) bis Kommissionierung.

$("#" + input_id).val(input); 

wird

$("#NAME_1>24").val(input); 

, die alle "24" Elemente sagt finden, das Kind sind Elemente von # NAME_1 - die keinen Sinn offensichtlich macht.

Am einfachsten ist es, keine css-Selektoren in Ihre IDs aufzunehmen.

Wenn dies nicht möglich ist, können Sie Attribut Match verwenden, zB:

$("['id=" + input_id + "']").val(input); 

aber das wird nicht sehr effizient sein.

+0

Danke. Es macht jetzt alles klar. – user1919

1

Concatenate der Wert direkt in dem Zufügen

$("#added_rules").append('<div class="input-group"><div class="input-group-btn" id="erase_query"><a href="#" class="btn btn-primary btn-mg" data-toggle="modal" data-target="#myModal" title="Help" ><span class="glyphicon glyphicon-minus"></span></a></div><input type="text" class="form-control" id="' + input_id + '" placeholder="" data-toggle="tooltip" title="" readonly value="'.value.'"></br></div>'); 
+0

Ich habe nicht daran gedacht. Ich habe es so versucht und es funktioniert, aber ich frage mich, ob es eine gute Praxis ist, die ID eines Elements mit Zeichen wie: <> = etc. – user1919

+0

@dkar warum nicht eine Klasse verwenden? – madalinivascu

+0

diese scheint eher wie ein xy Problem – madalinivascu

Verwandte Themen