【问题标题】:related autocomplete fields相关的自动完成字段
【发布时间】:2014-04-29 23:23:28
【问题描述】:

我正在尝试让两个文本框自动完成并相互填充。这是我到目前为止的代码,我被困在这一点上。

<script type="text/javascript" language="javascript" src="scripts/jquery-latest.js">  </script>
<script type="text/javascript" language="javascript" src="scripts/jquery.ui.js"></script>
<script type="text/javascript">
$().ready(function() {
$('#compName').keyup(function() {
    var txtSrch = $(this).val();
    if ( txtSrch && txtSrch.length > 2 ) {
        formData = 'vw=getCompany&compID=0&compName=' + txtSrch;
        // alert(formData); 
        $.ajax({ 
            url: 'output.cfm',
            data: formData,
            type: "post",
            cache: false,
            success: function(result) {
                $('#result').html(result);
            },
            error: function(xmlHttpRequest, status, err) {
                confirm('Error!' + err );
            }
        });
    }
});
});
</script>
<div style="width:400px; padding:20px;">
     <p>Company Selection</p>
     <label for="compID">Company ID:</label><br/>
    <input type="text" name="compID" id="compID" value="" />
    <br/>
    <label for="compName">Company Name:</label><br/>
    <input type="text" name="compName" id="compName" value="" />
    <div id="sel-comp" style="clear:both;"></div>
    <input type="submit" name="submit" id="submit" value="Submit">
     <div id="result"></div>
</div>

output.cfm 有:

<script>
var  compName = [{"id":"1000","name":"company1|CO|80401-8077|1000"},{"id":"1005","name":"company2|CO|80308-2291|1005"},{"id":"1010","name":"company3|CO|80202-1450|1010"},{"id":"1015","name":"company4|CO|80206-0109|1015"},{"id":"1020","name":"company5|CO|80003-6638|1020"}];

$('##compName').autocomplete({
source: compName
});
</script>

如果有人输入公司 ID 100,我想提供这些选项 1000、1005、1010、1015 和 1020 用于自动完成。选择后,我想用该 ID 的相应公司名称填充公司名称,反之亦然。名称字符串包括公司名称、州、邮政编码和公司 id,用“|”分隔。

有什么想法吗? 提前致谢。

【问题讨论】:

    标签: jquery autocomplete


    【解决方案1】:

    您的工作代码jsfiddle。参考一下。

       <div style="width:400px; padding:20px;">
            <p>Company Selection</p>
            <label for="compID">Company ID:</label><br/>
            <input type="text" name="compID" id="compID" value="" />
            <br/>
            <label for="compName">Company Name:</label><br/>
            <input type="text" name="compName" id="compName" value="" />
            <div id="sel-comp" style="clear:both;"></div>
            <input type="submit" name="submit" id="submit" value="Submit">
            <div id="result"></div>
        </div>
    
      $(function() {
    
        var compName = [{"id":"1000","value":"company1|CO|80401-8077|1000"},{"id":"1005","value":"company2|CO|80308-2291|1005"},{"id":"1010","value":"company3|CO|80202-1450|1010"},{"id":"1015","value":"company4|CO|80206-0109|1015"},{"id":"1020","value":"company5|CO|80003-6638|1020"}];            
        var source  = [ ];
        var mapping = { };
        for(var i = 0; i <compName .length; ++i) {
            source.push(compName [i].id);
            mapping[compName[i].id] = compName[i].value;
        }    
        $("#compID").autocomplete({
            source: source,
            minLength: 1,
            select: function(event, ui) {  
                $("#compName").val(mapping[ui.item.value]); 
            } 
        });
    });
    

    【讨论】:

    • 感谢您快速而激烈的回复。如果我输入 1,首先我想查看以 1* 开头的 id 列表。然后,假设我进入了 17,我想在乡村赛场上看到阿尔巴尼亚。我该怎么做?
    • 这是您询问jsfiddle.net/akhildave/DLLVw/250 的工作代码 .. 当您选择 id 17 时,它将显示阿尔巴尼亚。
    • 这是您在小提琴链接中工作的代码jsfiddle.net/akhildave/DLLVw/252
    • 赞成。仍在努力将两者合二为一。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2013-01-08
    • 2012-04-05
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多