代码之家  ›  专栏  ›  技术社区  ›  Aaron Palmer

需要了解jQuery.val()函数的帮助吗

  •  1
  • Aaron Palmer  · 技术社区  · 17 年前
    alert("data going into $hidden: " + selected.data[1]);
    
    hidden.val(selected.data[1]);
    
    alert("data now in $hidden: " + $hidden.val());
    

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

    编辑#1:

    $.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自动完成扩展。表单上的每个文本框旁边都有一个单独的按钮,用于将表单提交给处理程序函数,该函数需要找到所选项目的值并将其保存到db。我的想法是在表单上包含一个隐藏字段来保存所选值。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Aaron Palmer    17 年前

    谢谢保罗·贝甘蒂诺。我发现我没有在隐藏字段id前面加一个#来传递初始隐藏,因此$hidden从未正确设置。我很难调试,因为autocomplete作为嵌入式资源位于ascx控件中。一旦我确定hidden的价值包括了#它工作正常。

        2
  •  0
  •   Daniel Von Fange    17 年前

    $hidden是否可以是未选中的复选框?