无法使用JQuery删除搜索文本框的内容

Cannot use JQuery to remove contents of a search textbox

本文关键字:文本 搜索 删除 JQuery      更新时间:2023-09-26

在我的屏幕上,我搜索一个合同,当我选择它时,我会获得该合同的相关数据。一旦我选择了一份合同,我希望合同标题能在页面的其他地方呈现。我可以这样做,但合同标题也显示在搜索文本框中,我不希望这样。所以在我的代码中,我有;

    <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">

jQuery.load()是异步的,所以当它调用服务器并返回结果时,$("#searchtermContract").val("");代码行已经运行(它将值设置为null,但随后被load()方法的结果覆盖。相反,将代码更改为

$('#propertiesForContract').load(url, function() {
   $("#searchtermContract").val("");
});

以便在回调中设置值

jquery load()函数本质上是异步的,这意味着即使load()还没有完成,调用load()下面的所有代码都将立即运行。您可以使用load()jquery函数的完整回调函数,这样一旦load()函数完成,回调中的代码就会运行。阅读http://api.jquery.com/load/