2014-11-21 31 views
-1

我正在嘗試使用json響應並使用它填充表單。我可以填充所有文本字段,但是,我無法獲得選擇字段來顯示json的值。Jquery JSON響應以填充表格中的許多字段

我的例子是對的jsfiddle Here

$('#sub').click(function(){ 

var returnValues = {'name':'Bob','age':'21','favoriteFood':'Spaghetti'}; 
$.each(returnValues, function(e,i){ 
    alert(e+i); 
    $('#'+e).val(i); 
    }); 
}); 

<input type='text' id='name'> 
<input type='text' id='age'> 
    <select name='favoriteFood'> 
     <option value=''> 
      <option value='Turkey'>Turkey</option> 
      <option value='Fish'>Fish</option> 
      <option value='Spaghetti'>Spaghetti</option> 
     </select> 

JSON響應有像{ 「toName」: 「CustomerX」}值 我的實際代碼:

 <div class='label'><label for='toName'>To Name</label></div> 
      <div class='input' style='width:15%'><select id='toName'> 
            <option value=''></option> 
<?php 
    foreach ($customers as $k => $v) 
    { 
      if(strlen($v) > 0) 
      { 
        echo "<option value='" . $k . ":" . $v . "'>" . $v . "</option>"; 
      } 
    } 
?> 
    </select></div> 

回答

1

的jsfiddle =>http://jsfiddle.net/apf9ds5m/2/

你要選擇的文本?那麼這將做到這一點:

$('#sub').click(function(){ 
    var returnValues = {'name':'Bob','age':'21','favoriteFood':'Spaghetti'}; 
    $.each(returnValues, function(e,i){ 
     //alert(e+i); 
     if ('favoriteFood' === e) { 
      $('select#'+e).val(i).attr("selected", "selected"); 
     } else { 
      $('#'+e).val(i); 
     } 
    }); 
}); 

請加中的id選擇:

<select id='favoriteFood' name='favoriteFood'> 
+0

不,我期待填充來自json的響應字段。 – bart2puck 2014-11-21 18:47:57

+0

@ bart2puck剛剛更新了答案和jsfiddle - 更好? – 2014-11-21 21:54:29

2

您需要在下拉列表中設置id =,而不僅僅是名稱。 jQuery在您設置的循環中不會按名稱找到它。如果您需要將該名稱用於其他目的,則可以將它們設置爲相同。

<select id='favoriteFood' name='favoriteFood'> 
+0

或者您可以使用'$('[name ='+ e +']')' – andrew 2014-11-21 18:27:16

+0

E.J.這是一個錯字,一旦我修好了,它就可以在jsfiddle上運行,而不是在我的網站上。我的網站有客戶名稱和東西,所以我不能發佈到jsfiddle。爲了測試,我將選擇字段更改爲文本框,並且它工作正常,它與選擇字段有關。我添加了選擇字段的實際代碼。 – bart2puck 2014-11-21 18:45:14

0

解決的辦法是補充:

if (e == "toName"){ 
$('#toName option:contains('+i+')').prop('selected', true); 
} 

我將不得不對所有選擇這樣做字段在我的形式。

0

是你喜歡的東西嗎?

$('#sub').click(function() { 
    var returnValues = {'name':'Bob','age':'21','favoriteFood':'Spaghetti'}; 
    $.each(returnValues, function(e,i){ 
     alert(e+i); 
     $('#'+e).val(i); 
     if (e == 'favoriteFood') { 
      $('select option[value="'+i+'"]').attr('selected', true); 
     } 
    }); 
});