选择下拉列表返回代码而不是其值

时间:2016-03-31 09:14:17

标签: jquery

我有以下下拉列表,网上的所有示例都显示此代码以获取值,但在我的示例中,我返回了一些jquery代码的kinde。

 <div class="col-md-3 form-group">
    <label for="values">Myselect</label>
    <?php $values  = array('test','test2','test3');?>   
    <select name="values" class="form-control myselect">
        <?php foreach($values as $value) { ?>
            <option value="<?php echo $value; ?>"><?php echo $value;?></option>
        <?php } ?>                                  
    </select>                                                           
</div>
<script>
    $('.myselect').change(function(){
        var myvalue = $('.myselect').val;
        alert(myvalue);
    });
</script>

当我更改功能时,我会在我的警告框中获得此输出。

function ( value ) {

    var hooks, ret, isFunction,

        elem = this[0];



    if ( !arguments.length ) {

        if ( elem ) {

            hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];



            if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {

                return ret;

            }



            ret = elem.value;



            return typeof ret === "string" ?

                // handle most common string cases

                ret.replace(rreturn, "") :

                // handle cases where value is null/undef or number

                ret == null ? "" : ret;

        }



        return;

    }



    isFunction = jQuery.isFunction( value );



    return this.each(function( i ) {

        var val;



        if ( this.nodeType !== 1 ) {

            return;

        }



        if ( isFunction ) {

            val = value.call( this, i, jQuery( this ).val() );

        } else {

            val = value;

        }



        // Treat null/undefined as ""; convert numbers to string

        if ( val == null ) {

            val = "";

        } else if ( typeof val === "number" ) {

            val += "";

        } else if ( jQuery.isArray( val ) ) {

            val = jQuery.map( val, function( value ) {

                return value == null ? "" : value + "";

            });

        }



        hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];



        // If set returns undefined, fall back to normal setting

        if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {

            this.value = val;

        }

    });

}

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的错误可能在于缺少括号。查看代码,您可以看到此行

var myvalue = $('.myselect').val; // wrong!!!

.val目前是一个函数,函数总是必须用这些括号调用,这基本上意味着你需要使用.val()。这样做会触发您的功能并显示正确的返回值。

var myvalue = $('.myselect').val(); // right!!!

如果您不使用括号,就像您在示例中所做的那样,输出将是函数体,而不是其返回值(再次 - 正如您在示例中所见)。