2016-03-31 3 views
-1

Ich habe die folgende Dropdown-Liste, alle Beispiele rund um das Netz zeigen diesen Code, um die Werte zu erhalten, aber in meinem Beispiel gibt einige Kinde von jquery Code zurück.Wählen Sie Drop-Down-Returncode und nicht seinen Wert

<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> 

Wenn ich die Funktion ich diese Ausgabe in meinem Alertbox bekommen ändern.

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; 

     } 

    }); 

} 

Gibt es eine Möglichkeit, dies zu erreichen?

+0

Sie benötigen Klammern, ** um ** eine Funktion zu rufen ... –

Antwort

2

Ihr Fehler kann in der fehlenden Klammer liegen. Suchen Sie in Ihrem Code, können Sie diese Zeile sehen

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

.val ist derzeit eine Funktion und Funktionen haben Sie immer mit denen Klammern genannt werden, was im Grunde bedeutet, dass Sie .val() stattdessen verwenden müssen. Dies sollte Ihre Funktion auslösen und einen angemessenen Rückgabewert anzeigen.

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

Wenn Sie keine Klammern verwenden, wie Sie in Ihrem Beispiel getan haben, wird die Ausgabe der Funktionen Körper sein, statt dessen Rückgabewert (wieder - wie Sie in Ihrem Beispiel gesehen haben).

+0

Das ist richtig, Nähte haben das vergessen! – sdfgg45

Verwandte Themen