在将我的kendo-ui网格移动到bootstrap模式中之前,我会点击Add Row,然后选择3个输入中的第一个。然后我会选择第二个,然后是第三个然后选项卡到复选框按钮,我将按下回车键并添加行。然后焦点将返回到“添加行”按钮,我可以按Enter键再次开始处理。那么现在它在一个模态中我失去了除了标签之外的一切。我找到了使用jquery来应用焦点的解决方案,但我已经在我的网格控制器中有了它。
Kendo-ui网格控制器
$scope.mainGridOptions = {
dataSource: dataSource,
pageable: false,
toolbar: [{ name: "create", text: "Add Product", }],
columns: [
{ field: "product", title: "Product", width: "95px", editor: productEditor },
{
field: "price", title: "Price", width: "95px", format: "{0:c2}", editor: priceEditor
},
{
field: "sqft", title: "Square Feet", width: "95px", editor: sqftEditor
},
{
command: [{ name: 'edit', text: { edit: '', update: '', cancel: '' }, width: '20px' }, { name: 'destroy', text: '' }], title: ' ', width: '80px'
}],
editable: 'inline'
};
function productEditor(container, options) {
$('<input id="product" name="product" data-bind="value:product" data-productvalidation-msg="Put the Product!" />')
.appendTo(container)
.kendoMaskedTextBox({});
$("#product").focus(function () {
var input = $(this);
setTimeout(function () {
input.select();
});
});
};
function priceEditor(container, options) {
$('<input id="price" name="price" data-bind="value:price" data-step="10000" style="" data-productvalidation-msg="Put the Price!"/>')
.appendTo(container)
.kendoNumericTextBox({ format: 'c0', min: 0 });
$("#price").focus(function () {
var input = $(this);
setTimeout(function () {
input.select();
});
});
}
function sqftEditor(container, options) {
$('<input id="sqft" name="sqft" data-bind="value:sqft" data-step="500" style="" data-productvalidation-msg="Put the Sqft!"/>')
.appendTo(container)
.kendoNumericTextBox({ format: '0', min: 0 });
$("#sqft").focus(function () {
var input = $(this);
setTimeout(function () {
input.select();
});
});
};
模态
<!-- Grid Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<div style="width:100%"><span class="modal-label">My Product Data</span><button style="float:right" class="btn btn-custom waves-effect" data-dismiss="modal"><i class="zmdi zmdi-close"></i></button></div>
</div>
<div class="modal-body">
<div kendo-grid id="grid" options="mainGridOptions"></div>
</div>
</div>
</div>
</div><!--End Grid Modal -->
打开模态的功能
$scope.openGrid = function () {
$('#myModal').modal('show');
};
答案 0 :(得分:6)
在NumericTextBox Kendo-UI控件的API函数上,它显示可以通过执行以下伪代码获得焦点:
var numerictextbox = $("#numerictextbox").data("kendoNumericTextBox");
numerictextbox.focus();
因此将此应用于您的代码,它看起来像这样:
var price= $("#price").data("kendoNumericTextBox");
price.focus();
此外,由于您的模态弹出窗口更像是一个应用程序,我建议您从
切换可访问性属性答案 1 :(得分:4)
我认为焦点是从引导模式本身被劫持的,你可以使用shown
事件并相应地设置焦点。
价:
Bootstrap为大多数插件提供自定义事件&#39;独特的行动。 一般来说,这些都是不定式和过去分词形式 - 在事件开始时触发不定式(例如show)的地方, 它的过去分词形式(例如显示)是在 完成一项行动。
从3.0.0开始,所有Bootstrap事件都是命名空间。
所有不定式事件都提供preventDefault功能。这个 提供在此之前停止执行操作的功能 启动。
代码:
$('#myModal').on('shown.bs.modal', function () {
//your current focus set
});
答案 2 :(得分:0)
在show modal window中尝试这个...
this.$workModal.on('show.bs.modal', (e) => {
$('#workId_input').data('kendoNumericTextBox').focus();
});
UI上的....您需要输入ID ...
<input id='workId_input', data-bind="kendoNumericTextBox ......">
答案 3 :(得分:0)
Try this.. you just need to turn off Event Listener attached by Bootstrap.
$('#myModal').on('shown.bs.modal', function() {
$(document).off('focusin.modal');
});