Vorausgesetzt, dass das option
Element mit der uniquecode
des Objekts als Wert erstellt wird, warum müssen Sie sogar erneut auf das Objekt zugreifen? Sie können einfach die value
Eigenschaft des ausgewählten option
... abrufen?
Angenommen, dies nur, weil Sie Ihr Beispiel stark vereinfacht haben, und die Objekte innerhalb des Arrays nicht halten andere nützliche Daten, die nicht in der option
Element gehalten wird selbst, dann können Sie $.grep
verwenden, um die Anordnung von Objekten durch die filtern uniquecode
ausgewählt, wie folgt aus:
var json = '[{"uniquecode":"b32dez2","name":"John Doe","foo":"bar"},{"uniquecode":"a2df32","name":"Adam Smith","foo":"buzz"}]';
var result = JSON.parse(json);
var $sel = $('#names').change(function() {
var value = this.value;
var obj = $.grep(result, function(e) {
return e.uniquecode == value;
});
$("#code").html(obj[0].uniquecode + '/' + obj[0].foo)
});;
result.forEach(function(obj) {
$('<option value="' + obj.uniquecode + '">' + obj.name + '</option>').appendTo($sel)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="names"></select>
<div id="code"></div>
Bitte beachte, dass ich die foo
Eigenschaft auf dem Objekt hinzugefügt Ihnen zeigen, wie außerhalb von thos Eigenschaften des Objekts zugreifen e platziert direkt auf dem option
Element.
Beachten Sie auch, dass ich den Code, der die option
Elemente generiert, auch vereinfacht. Wenn Sie jQuery einmal in Ihrem Projekt verwenden möchten, können Sie es auch überall verwenden.
Ich habe meine Frage tatsächlich zu stark vereinfacht, die Objekte innerhalb des Arrays enthalten andere nützliche Daten, die nicht im Optionselement selbst enthalten sind. Ihr Beispiel macht genau das, wonach ich gesucht habe. Wusste nicht über '$ .grep'. Danke vielmals! – binoculars
Bin gerade auf ein neues Problem gestoßen. Ich verwende jQuery Validation (https://github.com/jzaefferer/jquery-validation), um das Formular zu validieren. Mit diesem Plugin kann ich bestimmte Regeln definieren: 'rules: {'name-of-input-field': {benötigt: true, range: [60, 120]}'. Dies erlaubt nur Ziffern zwischen 60 und 120. Wie kann ich diesen Bereich basierend auf der gewählten Option dynamisch ändern, wenn 'range_upperlimit' und' range_lowerlimit' ebenfalls Teil des json-Objekts sind? – binoculars
Ich glaube, dass der Validator auch Attribute berücksichtigt, die Sie dem Element hinzufügen, um seine Regeln festzulegen. Überprüfen Sie die Dokumentation für weitere Informationen, oder fühlen Sie sich frei, eine neue Frage für sie zu starten –