我们有一个带有下拉列表和Telerik Kendo UI控件的表单(以及Telerik网格)。
当用户从下拉列表中进行选择时,将向MVC控制器动作发出一个ajax调用,该动作将发回更多数据,这些数据将部分填写表单。其中一个字段用Kendo UI NumericTextBox表示。
要求是在数据返回时在此NumericTextbox上设置输入焦点。
然而,这似乎在我尝试的任何场景中都不起作用。
下面是如何在页面上定义数字文本框:
@Html.Kendo().NumericTextBoxFor(model => model.ApplyFromPOA).Name("ApplyFromPOA").Step(0.01m).Min(0.00m).HtmlAttributes(new { @style = "width: 100%", @id = "ApplyFromPOA", @class = "defaultfocus" })
以下是dropdownlist的定义:
@Html.Kendo().DropDownList().Name("AddPaymentCustomer").BindTo(@Model.CustomerList).DataTextField("Name").DataValueField("ID").HtmlAttributes(new { style = "width: 100%; max-width: 300px;" }).Events(e => { e.Change("changeCustomerInAddPaymentWindow"); })
函数的变化如下:
function changeCustomerInAddPaymentWindow (e) {
var dataItem = getSelectedDataItemFromDropdown(e);
var datagrid = $('#MyCustomerInvoiceResults').data('kendoGrid');
var dataSource = datagrid.dataSource;
if (null != dataItem) {
if (dataItem.ID == 0) {
// Clear out the form
clearOutForm();
}
else {
$.ajax({
url: "/Home/GetCustomerAndInvoices",
type: 'POST',
data: {
customerId: dataItem.ID
},
success: function (updatedModel) {
$("#ApplyFromPOA").val(updatedModel.ApplyFromPOA);
$("#poaAvailable").val(updatedModel.POAStringNoCommas);
$("#POAString").html(updatedModel.POAString);
$("#amount-left").html(updatedModel.POAString);
$.each(updatedModel.Invoices, function (index, item) {
dataSource.add(item);
});
dataSource.sync();
setTimeout(function () {
$("#ApplyFromPOA").select();
$("#ApplyFromPOA").focus();
$("#ApplyFromPOA").find("input").focus(0, function () { });
}, 200);
},
error: function () {
}
});
}
}
}
相关部分是在ajax调用返回后尝试将焦点设置在“ApplyFromPOA”控件上。这不工作。下拉列表保留焦点。
我还尝试使用网格的“sync”事件调用一个特殊函数,该函数将在“ApplyFromPOA”NumericTextBox上设置输入焦点。那里也没有爱。
在任何情况下,DropdownList都会顽固地保留输入焦点。
问题是NumericTextbox不会将自身更新为Ajax调用后设置的值,直到有人实际单击该字段。当AJAX调用返回时,我们将执行以下操作:
$("#ApplyFromPOA").val(updatedModel.ApplyFromPOA);
理想情况下,我们无论如何都需要在数字文本框上输入光标。
谢谢你的帮助。
乍得雷曼
Kendo NumericTextBox实际上做了一件非常令人讨厌的事情,并将您现有的
您要做的是使用小部件实例而不是输入元素。
在您的
成功
回调中,不要使用jQuery函数,如. val()
和. point()
,而是将其替换为:
success: function (updatedModel) {
// get Kendo widget instance
var applyFromPoaWidget = $("#ApplyFromPOA").data("kendoNumericTextBox");
// set new value
applyFromPoaWidget.value(updatedModel.ApplyFromPOA);
// set focus
applyFromPoaWidget.focus();
}
问题内容: 我有文字输入。当输入获得焦点时,我想选择输入内的文本。 使用jQuery,我可以这样: 我四处搜寻以尝试找到Angular方式,但是我发现的大多数示例都在处理一个指令,该指令正在监视模式属性的更改。我假设我需要一个指令来监视接收焦点的输入。我该怎么办? 问题答案: 在Angular中执行此操作的方法是创建一个自定义指令,该指令会为您自动选择。 应用如下指令: Update1 :删除了j
我有剑道下拉列表,我想选择下拉列表的选择值。我得到了选定项目的文本,但不是应该是ID的值。 绑定数据与Dropdown列表剑道 使用剑道下拉列表绑定选择函数。
问题内容: 呈现组件后,将焦点设置在特定文本字段上的反应方式是什么? 文档似乎建议使用引用,例如: 在渲染函数中的输入字段上进行设置,然后调用: 但是我应该在哪里称呼它呢?我已经尝试了几个地方,但无法正常工作。 问题答案: 您应该这样做,而不是。像这样
我有一个可编辑的剑道网格,有一个字段是一个下拉列表。我有一个和字段需要在该列中使用。名称显然会显示,而ID应该是用于绑定的。我已经在下面的示例中删除了我的数据源URL,但是DropDownList数据显示良好,包含名称和ID值列表。 我已经看了一段时间了,所以我可能错过了一些明显的东西。我对这个问题有一个相同的问题(下拉列表不绑定到该行中显示的用户,直到我单击下拉列表来展开它),但是我认为我的模型
在 Photoshop 中您可以轻松地选择位于焦点中的图像区域/像素。 执行以下操作: 在 Photoshop 中打开图像后,选取“选择”>“焦点区域”。在“焦点区域”对话框中,您可以更改默认选区。 调整“焦点对准范围”参数以扩大或缩小选区。如果将滑块移动到 0,则会选择整个图像。但是,如果将滑块移动到最右侧,则只选择图像中位于最清晰焦点内的部分。操作演示:使用默认选项选择焦点区域 使用画笔控制在
当组件挂载时,我试图专注于输入。输入组件是一个样式化的组件,因此我使用innerRef来获取对元素的引用。然而,当组件挂载时,输入不会得到焦点。我已经检查了该节点是否实际获得了对DOM节点的引用。我找不到我的逻辑有任何问题。谢谢你的帮助。