jquery - 使用jQuery选择指定属性最小值的元素

标签 jquery asp.net jquery-ui

我需要使用 jQuery 将焦点设置到具有指定属性最小值的元素。例如,在此标记中:

<input type='text' data-myAttr='5' />
<input type='text' data-myAttr='3' />

我想将焦点设置到第二个输入。它可以在 IEnumerable<T> 上用 C# 表达。页面上的元素如下所示:

List<DomElement> elements; //Assume this is full of page elements
DomElement minElement = elements.OrderBy(e => e.attr("data-myAttr")).First();
minElement.Focus();

上下文是我有一个 Web 应用程序 (ASP.NET),涉及几个不同的 jQueryUI 模式对话框,用于编辑不同类型的记录。他们每个人都有一个定义的选项卡顺序。根据编辑权限,某些模式上的某些字段会替换为文本(标签而不是 DropDownLists 或 TextBoxes)。 jQueryUI 默认聚焦对话框中第一个可聚焦元素的正常行为并不总是适合我,因此我需要将焦点设置到模式中具有最小选项卡索引的元素。

最佳答案

迭代集合,找到最低值并将焦点设置到它,如下所示:

function setDialogFocus() {
    var minValue;
    var minItem;
    $("input[type='text']").each(function() {
        var val = parseInt($(this).attr("data-myAttr"), 10);
        if (val && (!minItem || val < minValue)) {
            minItem = this;
            minValue = val;
        }
    });

    if (minItem) {
        $(minItem).focus();
    }
}

这也可以通过 .map() 来完成,如下所示:

function setDialogFocus() {
    // get an array of all data attributes and their corresponding objects
    var map = $("input[type='text']").map(function() {
        var val = parseInt($(this).attr("data-myAttr"), 10);
        if (val) {
            return ({obj: this, value: val});
        }
    }).get();
    // sort by value to find the lowest value
    map.sort(function(a, b) {return a.value - b.value;});
    if (map.length > 0) {
        $(map[0].obj).focus();
    }
}

关于jquery - 使用jQuery选择指定属性最小值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668412/

相关文章:

c# - Entity Framework 稍后在选择语句中使用已选择的值保存在新变量中

asp.net - 配置 ASP.NET 开发服务器以连接到 postgres 数据库

jquery - 您可以使用 jquery、javascript 或 css 提取背景大小为 'auto' 的值吗?

javascript - 动态更改可放置元素的 CSS

javascript - Bootstrap 工具提示/弹出窗口关闭导致 HTML 元素被隐藏

javascript - 如何将 arr.reverse() 值设置为下拉列表

javascript - jQuery 深度扩展,仅替换值,不希望添加新键

c# - 试图找到控件

jquery - 可视化 JQuery UI 表单设计器

javascript - 如何在 jQuery/Javascript 中获取多个命名查询字符串值?