javascript - 如何使用 jquery 或 javascript 从 telerik radcombobox 获取选定的值? val() 不工作

标签 javascript jquery asp.net telerik

我有一个 ListView ,它有一个嵌套 ListView ,其中在项目模板中包含 radcomboboxes。因此,ID(据我所知)对我来说毫无用处。

例如,如果我有 30 个项目,那么每个项目都会生成一个新的组合框,因此名称将由 asp.我需要的是能够从用户正在使用的任何组合框中获取选定的值。我目前正在使用 jQuery 和一些荒谬的 parent().parent().children()输入无意义的内容,以便找到与提交按钮相关的正确组合框。

当单击提交按钮时,我需要它来查找其各自组合框的选定值,以便我可以将其发送到帖子提交处理程序。问题是.val() jQuery 方法不起作用。当我将其与以下内容一起使用时:

$(this).parent().parent().children().children(".statusCbo").val();

我最终得到的是文本值,而不是选定的值。我进行了三次检查,以确保我在 aspx 文件中正确绑定(bind)了字段;

DataTextField = '<%#Eval("name") %>' DataValueField = '<%#Eval("id") %>'

但正如我所说,我最终得到了所选项目的 DataTextField 值。我能得到的最好的解释是,它与控件如何请求内容(通过 ajax)有关。

无论如何,有人可以提供一些关于如何准确地从组合框中获取所选值的建议吗?

更新: 我能够通过不同的方式获得对该对象的引用:

$(".submitTag").click(
        function () {
            var topLevel = $(this).closest(".CommentTopLevel");
            var status = topLevel.find(".StatusTag").get_value();                   

            //stub to test value
            alert(status);
            return false;
        });

从这里开始,如果使用 status.val(),它将给我文本而不是值(与之前的问题相同)。该文档暗示我应该使用 status.get_value();但这是爆炸性的说法,该方法不受对象支持。有任何想法吗?

更新: 没关系,我发现它返回的是一个 jquery 对象,因此不包含该方法。继续挖掘。

解决方案: 我只需要执行一个额外的步骤即可使用传统方法。我不知道是什么花了这么长时间才让我满意:

$(".submitTag").click(
    function(){
        var topLevel = $(this).closest(".CommentTopLevelTag"); //gets the parent container
        var comboBoxID = topLevel.find(".StatusTag").attr("ID"); //gets the clientID of the jQuery object
        var comboBoxRef = $find(comboBoxID); //finds the control by id and brings back a non-jQuery object (useable)
        var comboBoxSelectedValue = comboBoxRef.get_value(); //uses the Telerik method to get the selected value
    });

最佳答案

自从我处理 Telerik 控件以来已经有一段时间了,但是您所做的只是绕过了 Telerik 为您制作的 api,这让我觉得这是一件非常糟糕的事情。 Telerik Controls 的下一版本可能会轻易破坏您的代码。

看,从 ListView 传递客户端 ID 应该不难。我可以解决几种方法,但现在我会让您自己解决。一旦您获得了控件的 ClientID,请按照 telerik 网站上的示例进行操作:

http://demos.telerik.com/aspnet-ajax/combobox/examples/programming/addremovedisableitemsclientside/defaultcs.aspx

一旦你有了这个ID,就可以做一些事情

var combo = $find(someVarReferencingTheId); 

现在您可以在客户端表单中引用组合框。现在找到一些可以从这里得到你想要的功能:

http://www.telerik.com/help/aspnet-ajax/combobox-client-side-radcombobox.html

...

利润!

编辑:实际上根本不需要 demos.telerik.com 的第一个链接,我只是展示了这一点,因为这就是我用来获取该行代码的内容(我永远不记得它是否是 $get$find 我需要使用,除非我当时正在做很多 Telerik 客户端的事情。)。

编辑2:$get$find是ASP.NET构造,而不是Telerik的。

关于javascript - 如何使用 jquery 或 javascript 从 telerik radcombobox 获取选定的值? val() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796255/

相关文章:

javascript - Chrome 中的 RotateY 无法正常工作?

javascript - ChartJS 重新渲染错误

c# - WebClient UseDefaultCredentials 不适用于 ldap 身份验证

c# - ASP.NET MVC 页面发布后速度很慢

javascript - 如何滚动固定的div

javascript - NodeJS 在函数内更改变量

php - 使用 PHP 读取 cookie

javascript - 如何使用JavaScript或jQuery刷新父页面后保留iframe src?

javascript - 选择任何其他选项 bootstrap 时取消选择默认选择

asp.net - IIS 7 忽略没有文件扩展名的 MapPageRoute