Was mich interessiert, ist $ option_value ['price'] in einer Zeichenfolge aus der Dropdown-Liste, nicht. Die Verwendung von .value gibt das spätere zurück.

Ich habe ausgewählte Menüs, die in einer foreach () - Schleife erstellt werden. Die Dropdowns halten Preisoptionen. Ich versuche, jedem Produkt eine eigene ID zu geben, damit ich die Javascript-Funktion onChange () verwenden kann, um die Preise auf dem Bildschirm zu aktualisieren.

Das Select-Tag sieht folgendermaßen aus:

 <select name="option[<?php echo $option['product_option_id']; ?>]" class="select_options" id="select_<?php echo $product['product_id']; ?>" onchange="getIt(this);">

Und das Javascript:

function getIt(el) {
var id = el.id;
a = document.getElementById(id).text;
alert(a);   
}

Wenn ich die ID benachrichtige, erhalte ich die Nummer select_some. So kann ich sehen, dass es die ID bekommt. Aber wenn ich a alarmiere, bekomme ich [Objekt HTMLSelectElement].

Also habe ich es versucht

alert(a.options.selectedIndex.value);

Und nicht identifiziert werden.

<?php if ($product['options']) { ?>
<div class="options" id="option_<?php echo $product['product_id']; ?>">
<?php foreach ($product['options'] as $option) { ?>
<?php if ($option['type'] == 'select') { ?>
<div id="option-<?php echo $option['product_option_id']; ?>" class="option select_option">    
  <select name="option[<?php echo $option['product_option_id']; ?>]" class="select_options" id="select_<?php echo $product['product_id']; ?>" onchange="getIt(this);">

    <option value=""><?php echo $text_select; ?></option>
    <?php foreach ($option['option_value'] as $option_value) { ?>

    <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>

    <?php if ($option_value['price']) { ?>
    (<?php echo $option_value['price_prefix']; ?><span id="newPrice"><?php echo str_replace('.00','.',$option_value['price']); ?></span>)
    <?php } ?>
    </option>
    <?php } ?>
  </select>
</div>
<?php } ?>
0
Travis 9 Okt. 2012 im 08:23

4 Antworten

Beste Antwort

"Gibt es eine Möglichkeit, den in der Dropdown-Liste angezeigten Text ($ xx.xx) anstelle des Werts abzurufen?"

Ich denke das ist wonach du suchst:

function getIt(el) {
   var a = el.options[el.selectedIndex].text;
   alert(a);
}

Mit el.selectedIndex erhalten Sie natürlich den Index der aktuell ausgewählten Option, den Sie als Index für die Sammlung von Optionen verwenden können, el.options, und erhalten dann den text dieser Option. Die Eigenschaft text gehört zu jeder Option, nicht zur Auswahl.

Demo: http://jsfiddle.net/FCnUQ/

(Beachten Sie, dass selectedIndex, wenn keine Option ausgewählt ist, -1 ist.)

Sie müssen getElementById() überhaupt nicht verwenden, da Sie bereits einen Verweis auf das Element el haben.

1
nnnnnn 9 Okt. 2012 im 04:50

Veränderung :

  a = document.getElementById(id).text;

Zu:

  a = document.getElementById(id).value;

Dadurch wird der Wert der ausgewählten Option angezeigt.

3
janenz00 9 Okt. 2012 im 04:28

Probieren Sie diesen Code aus und setzen Sie document.getElementById(id).value anstelle von document.getElementById(id).text

function getIt(id) {
 a = document.getElementById(id).value;
 alert(a);   
}
1
iLaYa ツ 9 Okt. 2012 im 04:29

Wenn Sie dies wie getit(this) übergeben, sollten Sie wie folgt codieren

function getIt(el) {
var id = el.id;
a = document.getElementById(id).value;
alert(el.value);   //you can directly alert like this
}
0
Pragnesh Chauhan 9 Okt. 2012 im 04:40