jQuery使用自动完成功能填充另一个文本框

时间:2015-01-08 10:58:10

标签: javascript jquery html html5

我有一个奇怪的问题,我想在使用自动完成功能后禁用文本框,我通过隐藏正确的框并显示新的框并将值设置为相同来完成此操作。

隐藏的第一个文本框中包含正确的数据,但第二个文本框只显示在我点击自动完成之前输入的数字,到目前为止我的代码是:

做一个jsfiddle来表明我的意思,输入26然后点击数字。

http://jsfiddle.net/7wys1rtk/1/

HTML:

<form>
Type Order Number:<br />
<input style='display:none;' class="jqueryShow" type='text' disabled/><input id='emailorderIDopen' class="jqueryHide" type='text' name="order" /><br />
<button id="sendemail" type="submit" class="btn btn-primary" disabled>Send Default Email</button>
</form>

jquery的:

$(function() {

    var availableTags = ["26438"];

    //SET AUTO COMPLETE AND ACTIVATE SEARCH ON CLICK
    $( "#emailorderIDopen" ).autocomplete({
        source: availableTags,
        select: function(event, ui) 
        {
            $("#orderIDopen").val(ui.item.value);
            $('#sendemail').removeAttr('disabled');
            $(".jqueryHide").hide();
            $(".jqueryShow").val($(".jqueryHide").val());
            $(".jqueryShow").show();

        }

    });

});

2 个答案:

答案 0 :(得分:3)

您可以将ui.item.value(完整项目值)传递到.jqueryShow元素而不是$(".jqueryHide").val(),因为它只包含您输入的文字。

$(".jqueryShow").val(ui.item.value);

小提琴叉:

http://jsfiddle.net/dmfuryra/

编辑: 问题摘要:http://jsfiddle.net/dmfuryra/1/

答案 1 :(得分:0)

这是因为异步进程,这意味着当你$(“。jqueryShow”)。val($(“。jqueryHide”)。val());被称为$(“。jqueryHide”)。val()包含您键入的值

你可以用$(“。jqueryShow”)来克服它.val(ui.item.value);