2016-06-09 93 views
0

如何從隱藏的輸入字段獲取數組值並能夠獲取我需要的元素?獲取JavaScript從隱藏輸入拉數組值?

<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;}"> 

當我運行這個時,我得到'undefined'爲valp。 我也有問題,其中功能prdcl_link未在正在創建或更改的隱藏字段上執行。

$(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

輸入元素的值是一個字符串,並且不能像您嘗試的那樣訪問它。但你到底是如何最終以這樣的怪物出現的呢? – Kruga

+0

我只在該字符串中有一個部分手(作爲其中的數據)。我正在爲一些開源軟件寫一個插件。 –

回答

0

輸入的值似乎是JSON格式,但是是HTML編碼的。首先你需要解碼字符串。下劃線具有en unescape功能,或者您可以搜索以查找其他方式來執行此操作。

然後,您可以使用JSON.parse將其轉換爲javaScript對象。但是你有一個錯誤,所以它不能被解析。圍繞名爲'json'的對象有一些額外的引號

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

如果括號中沒有引號,則該引號將有效。我想這裏發生的是首先將'json'對象轉換爲JSON格式(字符串)。然後這個字符串是另一個對象的一部分,它也被轉換爲JSON。現在不可能區分哪些引用是什麼的一部分。