Skip to content

Commit b7d5d2b

Browse files
committed
Fixed select() issue with existing dropdown
1 parent c9ff102 commit b7d5d2b

File tree

3 files changed

+41
-5
lines changed

3 files changed

+41
-5
lines changed

lib/addons/p5.dom.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,10 @@
188188
return converted;
189189
} else if (elt.tagName === "VIDEO" || elt.tagName === "AUDIO") {
190190
return new p5.MediaElement(elt);
191-
} else {
191+
} else if ( elt.tagName === "SELECT" ){
192+
return createSelect( new p5.Element(elt) );
193+
}
194+
else {
192195
return new p5.Element(elt);
193196
}
194197
}
@@ -525,6 +528,7 @@
525528

526529
/**
527530
* Creates a dropdown menu <select></select> element in the DOM.
531+
* It also helps to asssign select-box methods to p5.Element when selecting existing select box
528532
* @method createSelect
529533
* @param {boolean} [multiple] true if dropdown should support multiple selections
530534
* @return {Object|p5.Element} pointer to p5.Element holding created node
@@ -550,12 +554,19 @@
550554
* }
551555
* </code></div>
552556
*/
557+
553558
p5.prototype.createSelect = function(mult) {
554-
var elt = document.createElement('select');
555-
if (mult){
556-
elt.setAttribute('multiple', 'true');
559+
560+
if( typeof mult === 'object' && mult.elt.nodeName == 'SELECT' ){
561+
var self = mult;
562+
var elt = this.elt = mult.elt;
563+
}else{
564+
var elt = document.createElement('select');
565+
if( mult && typeof mult === 'boolean' ){
566+
elt.setAttribute('multiple', 'true');
567+
}
568+
var self = addElement(elt, this);
557569
}
558-
var self = addElement(elt, this);
559570
self.option = function(name, value){
560571
var opt = document.createElement('option');
561572
opt.innerHTML = name;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<html>
2+
<head>
3+
<script language="javascript" type="text/javascript" src="../../../../../lib/p5.js"></script>
4+
<script language="javascript" type="text/javascript" src="../../../../../lib/addons/p5.dom.js"></script>
5+
<script language="javascript" src="sketch.js"></script>
6+
</head>
7+
8+
<body>
9+
</body>
10+
</html>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function setup() {
2+
// Created a dropdown in DOM
3+
var dropdown = createSelect();
4+
dropdown.option('apple');
5+
dropdown.option('mango');
6+
dropdown.id("fruitlist");
7+
console.log( dropdown );
8+
9+
// Selected a dropdown from DOM
10+
var dropdown = select('#fruitlist');
11+
dropdown.option('applex');
12+
dropdown.option('mangox');
13+
console.log( dropdown );
14+
15+
}

0 commit comments

Comments
 (0)