Я использую элементы управления Kendo UI KendoUI Autocomplete & KendoUI MultiSelect . Мне нужно изменить эти значения элементов управления и их программное отображение на стороне клиента без действий пользователя с этими элементами управления.
Как воспроизвести поведение:
- Пожалуйста, посмотрите на этой ссылке JS fiddle имеется два элемента управления автозаполнения.
- Пожалуйста, введите несколько символов в каждом элементе управления и выберите результат из автоматического предложения.
- Затем нажмите на кнопку реверса, JS попытается изменить (отменить) значения, но это не завершить, не нажимая пользователя на результат, введенный в автоматическом предложении.
Как можно избежать выбора пользователем результатов? Если пользователь нажимает на Reveres, оба элемента управления должны иметь новые выбранные значения, и их отображение также должно отражать это. Если я нажму на «Показать выделение», это должно показать новые выбранные значения? У меня аналогичная проблема и с MultiSelect. Если поверьте, если я решу эту проблему, то же решение будет применимо и к MultiSelect.
HTML
<div class="demo-section k-content">
<h4>Find a product</h4>
<input id="From" style="width: 100%;" placeholder="From" />
<div class="demo-hint">Hint: type "che"</div>
<br />
<input id="To" style="width: 100%;" placeholder="To" />
<div class="demo-hint">Hint: type "unc"</div>
<br />
<p>Please select From and To then clcik on reverse</p>
<button id="reverse">
Reverse
</button>
<button id="show">
Show Selection
</button>
<p id="result">
</p>
</div>
JS
$(document).ready(function() {
$("#result").html("");
$("#From").kendoAutoComplete({
dataTextField: "ProductName",
filter: "contains",
minLength: 2,
dataSource: {
type: "odata",
serverFiltering: true,
transport: {
read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Products"
}
}
});
$("#To").kendoAutoComplete({
dataTextField: "ProductName",
filter: "contains",
minLength: 2,
dataSource: {
type: "odata",
serverFiltering: true,
transport: {
read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Products"
}
}
});
$("#reverse").click(function(e) {
$("#result").html("");
var $departure = $("#From").data("kendoAutoComplete");
var $destination = $("#To").data("kendoAutoComplete");
var departureStation = $departure.dataItem();
var destinationStation = $destination.dataItem();
$departure.search(destinationStation.icao_id);
$departure.select($departure.ul.children().eq(0));
$departure.value(destinationStation.DisplayName);
$departure.trigger("change");
$departure.close();
$destination.search(departureStation.icao_id);
$destination.select($destination.ul.children().eq(0));
$destination.value(departureStation.DisplayName);
$destination.trigger("change");
$destination.close();
});
$("#show").click(function(e) {
$("#result").html("");
var $departure = $("#From").data("kendoAutoComplete");
var $destination = $("#To").data("kendoAutoComplete");
var departureStation = $departure.dataItem();
var destinationStation = $destination.dataItem();
var from = JSON.stringify(departureStation);
var to = JSON.stringify(destinationStation);
$("#result").html("From :" + from + "<br/><br/><br/><br/>To: " + to);
});
});