【问题标题】:Need help understanding jQuery .val() function需要帮助理解 jQuery .val() 函数
【发布时间】:2009-03-02 16:44:42
【问题描述】:
alert("data going into $hidden: " + selected.data[1]);

hidden.val(selected.data[1]);

alert("data now in $hidden: " + $hidden.val());

上面最后一行中的 $hidden.val() 返回 undefined 的原因是什么?我已经验证 selected.data[1] 包含一个整数值。

编辑 #1: 每个 cmets 的一些额外上下文:($hidden 是隐藏的输入字段)

$.fn.extend({
    autocomplete: function(urlOrData, hidden, options) {
        var isUrl = typeof urlOrData == "string";
        var $hidden = $(hidden);
        options = $.extend({}, $.Autocompleter.defaults, {
            url: isUrl ? urlOrData : null,
            data: isUrl ? null : urlOrData,
            delay: isUrl ? $.Autocompleter.defaults.delay : 10,
            max: options && !options.scroll ? 10 : 150
        }, options);

        // if highlight is set to false, replace it with a do-nothing function
        options.highlight = options.highlight || function(value) { return value; };

        // if the formatMatch option is not specified, then use formatItem for backwards compatibility
        options.formatMatch = options.formatMatch || options.formatItem;

        return this.each(function() {
            new $.Autocompleter(this, options, $hidden);
        });

还有……

$.Autocompleter = function(input, options, $hidden) {
        //... 

        function selectCurrent() {
            var selected = select.selected();
            if (!selected)
                return false;

            var v = selected.result;
            previousValue = v;

            if (options.multiple) {
                var words = trimWords($input.val());
                if (words.length > 1) {
                    v = words.slice(0, words.length - 1).join(options.multipleSeparator) + options.multipleSeparator + v;
                }
                v += options.multipleSeparator;
            }


            alert("data going into $hidden: " + selected.data[1]);

            $hidden.val(selected.data[1]);

            alert("data now in $hidden: " + $hidden.val());

编辑 #2: 更多细节......我正在尝试在具有多个文本框控件(每个都实现自动完成)的表单上使用 jQuery 自动完成扩展。每个文本框旁边的表单上有一个单独的按钮,该按钮将表单提交给处理函数,该处理函数需要查找所选项目的值并将其保存到数据库中。我想解决这个问题的方法是在表单上包含一个隐藏字段来保存所选值。

【问题讨论】:

  • 我们需要知道 $hidden 到底指的是什么才能回答这个问题
  • @matt b:我相信您已经删除了您所询问的“$”。这是故意的还是意外的?
  • 我只是想把所有这些东西都包起来......进入自动完成的隐藏值是隐藏输入的 id,我将它包装在 $(hidden) 中制作我的 jquery 对象。然后将其传递给自动完成器。
  • 您是否尝试过调试 $hidden 在插入点是您认为的那样?

标签: javascript jquery


【解决方案1】:

感谢保罗·贝甘蒂诺。我发现我没有在隐藏字段 id 前使用 # 传递初始 hidden in,因此 $hidden 从未正确设置。我很难调试,因为自动完成功能在 ascx 控件中作为嵌入式资源。一旦我确保 hidden 的值包括 # 它工作正常。

【讨论】:

    【解决方案2】:

    $hidden 可能是一个未选中的复选框吗?

    【讨论】:

    • $hidden 是一个隐藏的输入字段
    猜你喜欢
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多