在我的屏幕上,我搜索一个合同,当我选择它时,我会得到合同的相关数据。一旦我选择了一个合同,我希望合同标题呈现在页面的其他地方。我可以这样做,但合同标题也会在搜索文本框中呈现,我不想这样做。所以在我的代码中;
<div class="col-md-12">
<span style="margin-right: 10px;">Find a Contract</span>
<span style="margin-right: 50px;">
<input type="search" id="searchtermContract" class="contractTitle"
data-msurvey-autocomplete="@Url.Action("Contract", "Autocomplete")"
data-msurvey-autocomplete-update-id="#ContractId"
data-msurvey-autocomplete-update-label="#ContractTitle1"
data-msurvey-populate-search-textbox-flag="N"/>
</span>
<input type="button" id="ResetContract" value="Reset"
style="margin-left: -40px;"
class="btn-mulalley btn-xs reset"
data-msurvey-reset-field="#searchtermContract"
data-msurvey-reset-id="#ContractId" />
<input type="hidden" id="ContractId" name="ContractId" />
<input type="hidden" id="ContractTitle1" name="ContractTitle1" />
</div>
</div>
<div id="propertiesForContract">
</div>
在我的javascript里
var getPropertiesForContract = function (contractId) {
var url = GetHiddenField("msurvey-get-properties-for-contract-url").replace(/__ID__/, contractId);
$('#propertiesForContract').load(url);
// TODO this line is not working
$("#searchtermContract").val("");
};
在IE开发工具中,它显示了searchtermContract没有值,但是仍然显示了所选的契约。为什么会这样呢?
<input class="contractTitle ui-autocomplete-input" id="searchtermContract" type="search" data-msurvey-autocomplete-update-label="#ContractTitle1" data-msurvey-autocomplete-update-id="#ContractId" data-msurvey-autocomplete="/(S(jdfx1zrfoqjcrsyb0ltueuyp))/Autocomplete/Contract" data-msurvey-populate-search-textbox-flag="N" autocomplete="off">
发布于 2015-11-24 04:19:25
jQuery.load()
是异步的,所以当它调用服务器并返回结果时,您的$("#searchtermContract").val("");
代码行已经运行(它将值设置为null
,然后被load()
方法的结果覆盖。相反,将代码更改为
$('#propertiesForContract').load(url, function() {
$("#searchtermContract").val("");
});
,以便在回调中设置值。
发布于 2015-11-24 05:00:34
jquery ()函数本质上是异步的,这意味着即使load()尚未完成,调用load()下面的所有代码都将立即运行。您可以使用load() jquery函数的完整回调函数,这样回调中的代码将在load()函数完成后运行。阅读http://api.jquery.com/load/
https://stackoverflow.com/questions/33891487
复制相似问题