2015-11-24 2 views
0

На моем экране я ищу контракт, и когда я его выбираю, я получаю связанные данные по контракту. Как только я выбрал контракт, я хочу, чтобы название контракта отображалось в другом месте дальше страницы. Я могу это сделать, но заголовок договора также отображается в текстовом поле поиска, и я не хочу этого. Так что в моем коде есть;Невозможно использовать JQuery для удаления содержимого текстового поля поиска

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

JS Fiddle please ... – Aminadav

+0

Что произойдет, если вы введете '$ (" # searchtermContract "). Val();' в консоли? Используя dev-tools, посмотрите на html как есть, html не покажет вам текущее значение. –

+0

@ freedom-m Я поставил часы на $ ("# searchtermContract"), а значение свойства при запуске кода было пустым. – arame3333

ответ

1

jQuery.load() является асинхронным так в то время как его вызовом сервера и возвращает результаты, ваша $("#searchtermContract").val(""); строки коды уже работает (он устанавливает значение null, но тогда его переписан результатами метода load(). Вместо изменить ваш код для

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

так, чтобы установить значение в функции обратного вызова

1

функция JQuery нагрузки() является асинхронным по своей природе, то есть все коды ниже вашего вызов load() будет выполняться немедленно, даже если load() еще не закончен. Вы можете использовать полную функцию обратного вызова функции jquery load(), чтобы ваш код в обратном вызове выполнялся после завершения функции load(). Делайте некоторое чтение на http://api.jquery.com/load/

Смежные вопросы