0

ユーザーが別のユーザーにメッセージを送信したとき。送信するプロファイルのタイプを選択できます。(CommonまたはManager)...「recipient_type」を使用して送信するプロファイルをバックエンドでチェックしています。オートコンプリートを取得して非表示のラジオボタンを選択するにはどうすればよいですか?

オートコンプリートは次のようになります。To : または
To 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);
            }     
        });
    });
});
4

2 に答える 2

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);

#id_recipient_type[value="1"]またはへの jquery セレクター#id_recipient_type[value="0"]

HTML では ID は一意である必要があるため、最初のソリューションを使用したほうがよいでしょう。

文字列が見つからない場合にエラーをスローする分割でkmfkによって述べられた問題を解決する必要があるため、次のように変更します。' - '

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

に:

split_string = 'John Doe - Manage'.match(/ - (Manager)$/)
split_string = split_string != null ? "0" : "1";
于 2012-04-20T17:54:17.707 に答える
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);
于 2012-04-20T17:56:55.783 に答える