2016-11-10 73 views
1

在選擇框中選擇」正確的選擇」我有下面的代碼是用來填充一個選擇框:如何設置值,並有使用jquery

$(document).ready(function(){ 
    //populate site list. 
    $.ajax({ 
       url:"<?php echo site_url('site/sitelist');?>", 
       type:'POST', 
       dataType:'json', 
       success: function(res) { 
      //loop through results 
      var htmlstring = "<option value='' disabled selected>Select the Site</option>"; 
      for (var key in res) { 
      if (res.hasOwnProperty(key)) { 
        //console.log(key + " -> " + res[key]['site_abbrev']); 
        htmlstring += "<option value=" + res[key]['site_abbrev'] + ">" + res[key]['name'] + "</option>"; 
       } 
      } 
      $('#site').append(htmlstring); 
       }, 
      error: function(xhr, req, err) { 
      var err = eval("(" + xhr.responseText + ")"); 
      console.log(err.Message); 
      } 
    }); 

    var $site_val = $('#hidden_site').val(); 
    console.log($site_val); 
    if ($site_val !== 'undefined') { 
     $('#site').val($site_val); 
    } 


}); 

這是靜態的HTML代碼,我在開始時:

<!--use to populate select after form is displayed --> 
    <input type="hidden" id="hidden_site" name="hidden_site" value="<?php echo($details['site']);?>"/>            
     <select class="form-control" placeholder="Site:" name="site" id="site"> 
    </select> 

當我運行這段代碼,我可以看到在控制檯包含我的網站信息 變量的VAL「CAN」打印,但我似乎無法得到它的選擇從下拉菜單中選擇「加拿大」選項(其值爲「CAN」)。

編輯1

的代碼將無法正常工作,但在控制檯中我嘗試這樣做:

$("#site option[value='CAN'").prop('selected',true) 

證明「加拿大」具有CAN的值。現在我看到選擇了加拿大選項。但迄今爲止發佈的答案都沒有爲我工作。 :/

我也嘗試這兩種:

$('#site option[value="' + $site_val + '"]').prop('selected', true); 
    //$('#site option[value="' + $site_val + '"]').attr('selected','selected'); 

EDIT 2

這個版本也將失敗。

var $site_val = $('#hidden_site').val(); 
console.log($site_val); //prints CAN 
if ($site_val !== 'undefined') { 
    $('#site option[value="' + $site_val + '"]').change();  
    //$('#site option[value="' + $site_val + '"]').prop('selected', true); 
    //$('#site option[value="' + $site_val + '"]').attr('selected','selected'); 
} 
+0

嘗試$(「#站點選項[值=‘‘+ $ site_val +’’]」) –

+0

你要選擇具有一定的價值或設置選擇框的值的選項? – RomanPerekhrest

+0

@RomanPerekhrest是的,我想選擇一個使用該值的選項。所以我有一個名爲「加拿大」的選項,其值爲「CAN」。我想讓加拿大成爲選定的選項... – Happydevdays

回答

0

採用可變

我想,你實際上是試圖選擇具有指定值的選項來設置一個選擇框的值,用下面的辦法:

// to remove previously selected option, at first 
$('option:selected', 'select[name="site"]').removeAttr('selected'); 

$('#site option[value="' + $site_val + '"]').prop('selected', true); 

在某些情況下,下面還應該工作:

$('#site option[value="' + $site_val + '"]').attr('selected','selected'); 

而且因爲$.ajax方法異步工作,您應該將「選擇」代碼添加到success回調函數中。因此,它應該是這樣的:

... 
$('#site').append(htmlstring); 
var $site_val = $('#hidden_site').val(); 
console.log($site_val); //prints CAN 
if ($site_val !== 'undefined') { 
    $('option:selected', 'select[name="site"]').removeAttr('selected'); 
    $('#site option[value="' + $site_val + '"]').prop('selected', true); 
    //$('#site option[value="' + $site_val + '"]').attr('selected','selected'); 
} 
... 
+0

由於某種原因不起作用。我將添加顯示選擇控件的HTML ...以防萬一我錯過了您將看到的內容。 – Happydevdays

+0

請參閱我的「編輯1」 – Happydevdays

+0

我轉發了所有代碼,希望能更清楚/更容易地查看我的錯誤。 – Happydevdays

0

jsFiddle DEMO

$('#site').val($site_val) - 如果你想設置的值的選項>。

糾正你的代碼

由於$site_valvariable name,你必須使用它的value。像下面一樣使用字符串連接。

$('#site option[value="' + $site_val + '"]').prop('selected', true) - 這將選擇已具有值CAN的選項。

+0

因此沒有更多的錯誤消息,但「加拿大」選項(具有CAN值)未在窗體上設置。 – Happydevdays

+1

我更新了答案。請檢查 – Krishna

+0

@Happydevdays - 還添加了演示。 – Krishna

0

有很多方法可以用JavaScript來做到這一點。這裏是jQuery的方式。

只需設定值,就像這樣:

$("#whatever").val('value goes here'); 

此外,這裏有一個小提琴。

http://jsfiddle.net/CpXVB/

這是相當簡單的事情。我希望有所幫助。請讓我知道,如果你有任何問題。謝謝。