2016-06-09 23 views
0

Wie kann ich den Array-Wert aus einem versteckten Eingabefeld erhalten und in der Lage sein, die Elemente zu bekommen, die ich brauche?Javascript erhalten, um Array-Wert aus versteckten Eingabe zu ziehen?

<input type="hidden" name="digital_object[prdcls][0][prdcl_links][0][_resolved]" id="digital_object[prdcls][0][prdcl_links][0][_resolved]" value="{&quot;id&quot;:&quot;/prdcl_titles/1&quot;,&quot;title&quot;:&quot;test (test)&quot;,&quot;primary_type&quot;:&quot;prdcl_title&quot;,&quot;types&quot;:[&quot;prdcl_title&quot;],&quot;json&quot;:&quot;{\&quot;lock_version\&quot;:0,\&quot;title\&quot;:\&quot;test (test)\&quot;,\&quot;publication\&quot;:\&quot;test\&quot;,\&quot;publisher\&quot;:\&quot;test\&quot;,\&quot;created_by\&quot;:\&quot;admin\&quot;,\&quot;last_modified_by\&quot;:\&quot;admin\&quot;,\&quot;create_time\&quot;:\&quot;2016-06-07T13:20:46Z\&quot;,\&quot;system_mtime\&quot;:\&quot;2016-06-07T13:20:46Z\&quot;,\&quot;user_mtime\&quot;:\&quot;2016-06-07T13:20:46Z\&quot;,\&quot;jsonmodel_type\&quot;:\&quot;prdcl_title\&quot;,\&quot;uri\&quot;:\&quot;/prdcl_titles/1\&quot;}&quot;,&quot;suppressed&quot;:false,&quot;publish&quot;:false,&quot;system_generated&quot;:false,&quot;repository&quot;:&quot;global&quot;,&quot;created_by&quot;:&quot;admin&quot;,&quot;last_modified_by&quot;:&quot;admin&quot;,&quot;user_mtime&quot;:&quot;2016-06-07T13:20:46Z&quot;,&quot;system_mtime&quot;:&quot;2016-06-07T13:20:46Z&quot;,&quot;create_time&quot;:&quot;2016-06-07T13:20:46Z&quot;,&quot;uri&quot;:&quot;/prdcl_titles/1&quot;,&quot;jsonmodel_type&quot;:&quot;prdcl_title&quot;}"> 

Wenn ich das laufe, bekomme ich "undefined" für valp. Ich habe auch das Problem, wo die Funktion prdcl_link nicht auf dem versteckten Feld ausgeführt wird, das erstellt oder geändert wird.

$(document).ready(function() { 
    $("#digital_object[prdcls][0][prdcl_links][0][_resolved]").on('keyup change', prdcl_link); 
    $("#digital_object_prdcls__0__volume_num_").on('keyup change', prdcl_link); 
    $("#digital_object_prdcls__0__issue_num_").on('keyup change', prdcl_link); 

    function prdcl_link(){ 
     var valp = {}; 
     valp = $("#digital_object[prdcls][0][prdcl_links][0][_resolved]").val(); 
     console.log(valp); 
     var valv = $("#digital_object_prdcls__0__volume_num_").val(); 
     var vali = $("#digital_object_prdcls__0__issue_num_").val(); 

     var res; 
     var pub; 
     var vol; 
     var iss; 

     if (valp!=""){ 
      pub = valp['json']['publication']; 
      res = pub; 
      if (valv!=""){ 
       vol = " - Volume " + valv; 
       res = res.concat(vol); 
      } 
      if (vali!=""){ 
       if (valv!=""){ 
        iss = ", Issue " + vali; 
       } 
       else { 
        iss = " - Issue " + vali; 
       } 
       res = res.concat(iss); 
      } 
     } 


     $("#digital_object_title_").val(res); 
    }; 
}); 
+0

Der Wert eines Eingabeelements ist eine Zeichenfolge, auf die nicht zugegriffen werden kann, wie Sie es versuchen. Aber wie, in aller Welt, hattest du überhaupt eine solche Monstrosität? – Kruga

+0

Ich hatte nur eine Teilhand in dieser Zeichenfolge (die Daten darin). Ich schreibe ein Plugin für einige Open-Source-Software. –

Antwort

0

Der Wert der Eingabe scheint JSON-Format zu sein, aber HTML-codiert. Zuerst müssen Sie die Zeichenfolge dekodieren. Underscore have de unescape Funktion, oder Sie können suchen, um andere Möglichkeiten zu finden, es zu tun.

Dann können Sie JSON.parse verwenden, um es in ein javaScript-Objekt zu konvertieren. Aber Sie haben einen Fehler, so dass es nicht geparst werden kann. Es gibt einige zusätzlichen Anführungszeichen um ein Objekt mit dem Namen ‚json‘

...,"json":"{...}",... 

Wenn Sie nicht die Anführungszeichen um die Klammern haben, wäre es gültig. Ich denke, dass das JSON-Objekt zuerst in das JSON-Format konvertiert wurde. Dann war diese Zeichenfolge Teil eines anderen Objekts, das ebenfalls in JSON konvertiert wurde. Jetzt ist es unmöglich zu unterscheiden, welche Zitate zu welchem ​​Teil gehören.

Verwandte Themen