2016-04-08 8 views
1

Ich füge Werte aus einem ausgewählten Eingabeelement zu einem Textfeld hinzu. Wie kann ich dann Bedingungen hinzufügen, so dass, wenn ein bestimmter Optionswert ausgewählt ist, dieser immer am Ende aller anderen hinzugefügt wird?Festlegen der Reihenfolge der an ein Texarea angehängten Strings

HTML

<p> 
    <select name="selectfield" id="selectfield"> 
     <option value="" selected>- Select -</option> 
     <option value="HTML/">HTML/</option> 
     <option value="CSS/">CSS/</option> 
     <option value="JQUERY/">JQUERY/</option> 
    </select> 
</p> 

<textarea style="width:100%" name="info" id="info" cols="20" rows="5"></textarea> 

jQuery

$("#selectfield").on("change", function() { 
    var $select = $(this); 
    $("#info").val(function(i, val) { 
     return val += $select.val(); 
    }) 
}); 

In diesem Beispiel würde ich "HTML /" wie immer am Ende des Textbereiches sein, unabhängig davon, wenn es ausgewählt ist .

FIDDLE

+0

Nun, Sie müssen irgendwie Schleife über die Sammlung verschiedener ... – epascarello

+0

ich mit Ihnen in Bezug auf die schlechten UX Design zustimmen. Da der Textbereich nicht ausgeblendet ist, kann der Benutzer einfach den angehängten Wert aus dem Textbereich löschen. Aber ja, ich müsste eine bessere Lösung finden, wenn das Projekt zu irgendeinem Zeitpunkt live gehen würde. –

+0

Kann ich irgendwie Regex verwenden, um nach "HTML /" zu suchen, und wenn gefunden, fügen Sie es am Ende hinzu? Ich bin mir nicht sicher, wie ich das machen soll. –

Antwort

1

Wenn Sie das Textfeldes des Wert festgelegt, vergleichen, was der Wert der Auswahl ist. Wenn es die Zeichenfolge ist, die am Ende hinzugefügt werden soll, fügen Sie sie am Ende des Wertes hinzu, andernfalls fügen Sie sie am Anfang hinzu.

if($select.val()==="HTML/") 
    return val = val + $select.val(); 
else 
    return val = $select.val() + val; 

https://jsfiddle.net/qshcr01a/

+0

Elegant! Funktioniert perfekt :) Vielen Dank! –

+0

Gern geschehen – Wowsk

0

Above ist klüger, aber das funktioniert auch:

$("#selectfield").on("change", function() { 
    var $select = $(this); 
    $("#info").val(function(i, val) { 
    if (val=="HTML/"){ 
     return $select.val()+"HTML/"; 
     }else{ 
     if(val=="JQUERY/HTML/"){ 
     return "CSS/JQUERY/HTML/"; 
     }else if (val=="CSS/HTML/"){ 
     return "JQUERY/CSS/HTML/"; 
     }else{ 
     return val+= $select.val() 
     } 
     } 
    }) 
}); 
+0

Großartig, danke, ich schätze es! –

Verwandte Themen