2016-05-05 1 views
1

ich eine Seite mit mehreren select Elemente in der gleichen FormWie kopieren und ein html wählen ausgewählten Wert auf andere wählt einfügen

<select> 
    <option value="">Select ...</option> 
    <option value="1">Apple</option> 
    <option value="2">Banana</option> 
    <option value="3">Carrot</option> 
    <option value="4">Orange</option> 
    <option value="5">Pear</option> 
</select> 

Es gibt 8 wählt mit den exakt gleichen Optionen auf der Seite entwickelt haben. Der Benutzer möchte die ausgewählten Werte eines select von einem zum anderen kopieren und einfügen.

Der Endbenutzer initiiert es mit Strg + C, Strg + V. Die Web-App wurde geschrieben, um eine Excel-App zu ersetzen, die Kopieren und Einfügen durch den Endbenutzer erlaubt

Allerdings unterstützt eine HTML select nicht kopieren und einfügen. (Strg + C, Strg + V)

Was kann ich tun?

Irgendein Plugin, das das vielleicht tun kann? Jede minimale Autovervollständigung auswählen, um darauf hinzuweisen, dass das wie der Standard aussieht select?

Edit:

können die Datenliste Beispiel unter Verwendung einer Lösung sein. Das einzige Problem ist, dass es erlaubt, dass ungültiger Text, d. H. Text, der nicht eine der Auswahloptionen (abgesehen von nichts) ist, eingegeben wird. Wie erlaube ich nur gültigen Text?

+0

Stellen Sie den "Wert" Attribut eines wählen, die der anderen mit document.getElementById ('[select element1 ] '). value = document.getElementById (' [select element2] '). value; – Feathercrown

+0

Es ist nicht immer gleich, wenn der Benutzer sich zu – devc2

+0

entscheidet Der Weg zu gehen ist, Datalist zu verwenden, wie in der Antwort unten vorgeschlagen, auch diese Antwort ist ziemlich unvollständig zB https://jsfiddle.net/wkzr1q8t/ –

Antwort

1

sollten Sie datalist verwenden und keine gültige Eingabe wie folgt behandeln:

$('input[list]').on('change', function() { 
 
    var options = $('option', this.list).map(function() { 
 
    return this.value 
 
    }).get(); 
 
    if (options.indexOf(this.value) === -1) { 
 
    this.value = ""; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input list="food1" name="food1" placeholder="Select..."> 
 
<datalist id='food1'> 
 
    <option disabled>Select ...</option> 
 
    <option value="Apple">Apple</option> 
 
    <option value="Banana">Banana</option> 
 
    <option value="Carrot">Carrot</option> 
 
    <option value="Orange">Orange</option> 
 
    <option value="Pear">Pear</option> 
 
</datalist> 
 
<input list="food2" name="food2" placeholder="Select..."> 
 
<datalist id='food2'> 
 
    <option value="Apple">Apple</option> 
 
    <option value="Banana">Banana</option> 
 
    <option value="Carrot">Carrot</option> 
 
    <option value="Orange">Orange</option> 
 
    <option value="Pear">Pear</option> 
 
</datalist>

+0

Gibt es eine Möglichkeit, damit es mit einem anderen Wert als Anzeigewert z. https://jsfiddle.net/wkzr1q8t/7/ Ich werde das folgende zuerst versuchen, wie es in einer separaten Frage http://stackoverflow.com/questions/29882361/show-datalist-labels-but-submit beantwortet zu werden scheint -the-current-value – devc2

+0

Was ist Ihr erwartetes Verhalten? Ich bin nicht sicher, es zu bekommen –

+0

Es muss Apple in der Eingabe zeigen und nicht 1. Ich werde versuchen, die Antwort erwähnt in http://stackoverflow.com/questions/29882361/show-datalist-labels-but-submit- the-current-value – devc2

0

Stellen Sie den „Wert“ Attribut eines wählen, die der anderen mit

document.getElementById('[select element1]').value = document.getElementById('[select element2]').value; 

Sie dies für eine Schaltfläche in der onClick-Handler setzen können, wenn Sie wollen.

+1

Ist das eine Lösung? Dies wird nur Wert legen ... Nicht sicher, wie das helfen wird! – Rayon

+0

@Rayon Das OP möchte den Wert von eins auf den Wert eines anderen setzen, durch mein Verständnis der Frage. – Feathercrown

+0

Der Endbenutzer initiiert es mit Strg + C, Strg + V. Die Web-App wurde geschrieben, um eine Excel-App zu ersetzen, die Kopieren und Einfügen durch den Endbenutzer ermöglicht – devc2

1

Try Datalist

<input list="foods" name="food"> 
    <datalist id='food'> 
     <option value="1">Select ...</option> 
     <option value="1">Apple</option> 
     <option value="2">Banana</option> 
     <option value="3">Carrot</option> 
     <option value="4">Orange</option> 
     <option value="5">Pear</option> 
    </datalist> 

http://www.w3schools.com/tags/tag_datalist.asp

+0

Ich versuchte eine jsfiddle, aber es hat nicht funktioniert. Ich muss auch, wenn der Benutzer darauf klickt, um die Auswahlliste sofort zu öffnen – devc2

0

diesen Code Versuchen

var src=document.getElementById('src'); 
    var des=document.getElementById("des"); 
    var opt=document.createElement("Option"); 
    opt.value = src.options[src.selectedIndex].value; 
    opt.text = src.options[src.selectedIndex].text; 
    des.options.add(opt); 
0

das Datalist-Element Siehe: http://www.w3schools.com/tags/tag_datalist.asp

es wie folgt verwendet:

<input list="browsers" name="browserselect" type="text"/> 

<datalist id="browsers"> 
    <option value="Internet Explorer"> 
    <option value="Firefox"> 
    <option value="Chrome"> 
    <option value="Opera"> 
    <option value="Safari"> 
</datalist> 

Die Liste Attribut des Eingangselements, um das Eingangselement erzählt Verwenden Sie den Datenlistenersteller mit dieser ID.

Verwandte Themen