0

当一个用户向另一个用户发送消息时。他们可以选择要发送到的个人资料类型。(普通或经理)...我正在使用“recipient_type”在后端检查要将其发送到哪个配置文件,如何让我的自动完成功能为我选择隐藏的单选按钮?

自动完成看起来像这样:
To :John Doe - ManagerTo: 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"]到or的 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 回答