我有一个奇怪的问题,我想在使用自动完成功能后禁用文本框,我通过隐藏正确的框并显示新的框并将值设置为相同来完成此操作。
隐藏的第一个文本框中包含正确的数据,但第二个文本框只显示在我点击自动完成之前输入的数字,到目前为止我的代码是:
做一个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();
}
});
});
答案 0 :(得分:3)
您可以将ui.item.value
(完整项目值)传递到.jqueryShow
元素而不是$(".jqueryHide").val()
,因为它只包含您输入的文字。
$(".jqueryShow").val(ui.item.value);
小提琴叉:
编辑: 问题摘要:http://jsfiddle.net/dmfuryra/1/
答案 1 :(得分:0)
这是因为异步进程,这意味着当你$(“。jqueryShow”)。val($(“。jqueryHide”)。val());被称为$(“。jqueryHide”)。val()包含您键入的值
你可以用$(“。jqueryShow”)来克服它.val(ui.item.value);