【问题标题】:jqgrid advanced search input has no attributesjqgrid 高级搜索输入没有属性
【发布时间】:2017-01-03 13:06:28
【问题描述】:

我同时使用高级搜索和过滤器工具栏。两者共享大多数搜索选项。 我动态设置了searchoptions.dataInit,并且需要元素的attr“名称”,以便获得当前col的一些colmodel attrs,像这样......

searchoptions.dataInit = function(element) {
   console.log(element);
   var colName = $(element).attr('name'));
   var attrs = $grid.jqGrid('getColProp', colName);
   (hwere set some different datePicker options depending on col attrs ...)
}

这在 filterToolbar 情况下可以正常工作,但在高级搜索中不行。 在 dataInit 我调试“元素”...

  • 在“filterToolbar”中打印... 输入类型="text" name="prc_start" id="gs_prc_start" 值class="hasDatepicker"
  • 在“搜索表单”中打印... input type="text" id="jqg2" role="textbox" class="input-elm hasDatepicker">

所以,在第二种情况下,我无法获取字段名称,我需要获取一些 colmodel 参数。

我该如何解决这个问题? (jqGrid v4.6.0,目前无法升级)

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    您描述的问题仅存在于旧的 jqGrid 4.6 中。作为解决方法,我建议您使用以下方法

    searchoptions.dataInit = function(element) {
        var $td = $(element).closest("td.data");
        if ($td.length > 0) {
            // in searching dialog
            alert($td.siblings(".columns").find("select").val());
        }
        ...
    }
    

    $td (var $td = $(element).closest("td.data");) 将是外部单元格,其中包含带有日期选择器的输入。 $td.siblings(".columns") 将获取列上名称的单元格,$td.siblings(".columns").find("select").val() 获取列名称。

    【讨论】:

    • 奥列格:太好了,它有效!谢谢! (抱歉我还是不能投票)
    • 我之前没有尝试过 "closest("td.data")",因为我读过其他回复,您说 dataInit 元素是在附加到真实 dom 之前创建的,所以我猜它不会工作...最近(“td.data”);
    • @Aberel:不客气!获得 15 个声望点后,您将获得投票权(每天大约 30 个问题或答案)。你应该"accept"答案和一些旧答案,这解决了你的问题。顺便说一句,接受会提高你的声誉。
    • @Aberel:我在我之前的评论中的“接受”一词上向您发布了链接meta.stackexchange.com/a/5235/147495,它显示了如何接受答案。您可以查看您的旧问题并接受答案,从而解决问题。
    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 2012-03-28
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2023-01-16
    • 2021-02-02
    相关资源
    最近更新 更多