需要帮助理解jQuery .val()函数

时间:2009-03-02 16:44:42

标签: javascript jquery

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:每条评论的其他一些上下文:( $ 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自动完成扩展(每个都实现自动完成)。每个文本框旁边的表单上都有一个单独的按钮,用于将表单提交给处理函数,该函数需要查找所选项的值并将其保存到db。我认为这样做的方法是在表单上包含一个隐藏字段来保存所选值。

2 个答案:

答案 0 :(得分:1)

感谢Paolo Bergantino。我发现我没有在隐藏的字段id前面用#输入隐藏的初始值,所以$ hidden永远不会被正确设置。我很难调试,因为自动完成在ascx控件内作为嵌入式资源。一旦我确保隐藏的价值包括#它正常工作。

答案 1 :(得分:0)

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