2012-04-20 40 views
0

當用戶向另一個用戶發送消息時。他們可以選擇要發送到哪種類型的配置文件。 (Common或Manager)...我在後端檢查哪個配置文件發送給「recipient_type」,我如何讓我的自動完成爲我選擇隱藏的單選按鈕?通過自動完成功能設置隱藏的單選按鈕值

自動完成如下:
John Doe - Manager要:John Doe

模板:

<div class="hide"> 
    <input type="radio" id="id_recipient_type" name="recipient_type" value="0" /> 
    <input type="radio" id="id_recipient_type" name="recipient_type" value="1" /> 
</div> 
<div class="inline-block"> 
    <label for="id_omnibox"></label> 
    <input type="hidden" name="recipient_username" id="id_recipient_username" /> 
    <input id="message-to" class="required input-text" style="width: 145%;"name="omnibox" placeholder="Search for user..." autocomplte="on" type="text" /> 
</div> 

腳本:

$(document).ready(function(){ 
    $.get('/autocomplete/message/', function(data) { 
     var completions = new Array(); 
     var dict = JSON.parse(data, function(key, value) { 
      completions.push(key); 
      return value; 
     }); 
     $('#message-to').autocomplete({ 
      source: completions, 
      minLength: 1, 
      select: function(value, data){ 
       $('#id_recipient_username').val(dict[data.item.value]) 
       split_string = data.item.value.split("- "); 
       $('#id_recipient_type_'+(split_string[1]=="Manager"?"1":"0")).attr('checked', true); 
      }  
     }); 
    }); 
}); 

回答

2

看來,爲了你的代碼工作,你需要更改或:

<div class="hide"> 
    <input type="radio" id="id_recipient_type_0" name="recipient_type" value="0" /> 
    <input type="radio" id="id_recipient_type_1" name="recipient_type" value="1" /> 
</div> 

單選按鈕的ID。或者:

$('#id_recipient_type[value="'+(split_string[1]=="Manager"?"1":"0")+'"]').attr('checked', true); 

jQuery選擇到#id_recipient_type[value="1"]#id_recipient_type[value="0"]

我會採用第一種解決方案,因爲在html ids中應該是唯一的。

你需要解決的kmfk與分裂它拋出一個錯誤時沒有找到' - '串指出一個問題,所以改變:

split_string = data.item.value.split("- "); 

要:

split_string = 'John Doe - Manage'.match(/ - (Manager)$/) 
split_string = split_string != null ? "0" : "1"; 
+1

+1。不得不編輯我的答案,注意到ID不存在,但沒有提及它。當「 - 」在字符串中不存在時,仍會遇到'split_string [1]'上的未定義錯誤。 – kmfk 2012-04-20 17:59:35

+0

同意,我會改變我的答案與正則表達式一起工作。謝謝你的提示。 – 2012-04-20 18:00:58

+0

你們真棒。感謝您的幫助! – Modelesq 2012-04-20 18:24:55

1

展望通過您的代碼示例,這些行似乎是問題:

split_string = data.item.value.split("- "); 
$('#id_recipient_type_'+(split_string[1]=="Manager"?"1":"0")).attr('checked', true); 

- Manager不在字符串中時,該拆分將會成爲問題 - 並且您正在查找的ID不存在。

也許這樣做:

var valAttr = data.item.value.indexOf("- Manager") > 0 ? 1 : 0; 
$('#id_recipient_type [value="'+valAttr+'"]').attr('checked', true); 
相關問題