Merge pull request #771 from phtrivier/issue-619
#619 : val takes an optional argument to avoid triggering 'change'
This commit is contained in:
commit
273ec1438e
22
select2.js
22
select2.js
@ -1757,7 +1757,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
|
||||
// single
|
||||
val: function () {
|
||||
var val, data = null, self = this;
|
||||
var val, triggerChange = true, data = null, self = this;
|
||||
|
||||
if (arguments.length === 0) {
|
||||
return this.opts.element.val();
|
||||
@ -1765,6 +1765,10 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
|
||||
val = arguments[0];
|
||||
|
||||
if (arguments.length > 1) {
|
||||
triggerChange = arguments[1];
|
||||
}
|
||||
|
||||
if (this.select) {
|
||||
this.select
|
||||
.val(val)
|
||||
@ -1774,7 +1778,9 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
});
|
||||
this.updateSelection(data);
|
||||
this.setPlaceholder();
|
||||
if (triggerChange) {
|
||||
this.triggerChange();
|
||||
}
|
||||
} else {
|
||||
if (this.opts.initSelection === undefined) {
|
||||
throw new Error("cannot call val() if initSelection() is not defined");
|
||||
@ -1782,7 +1788,9 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
// val is an id. !val is true for [undefined,null,'']
|
||||
if (!val) {
|
||||
this.clear();
|
||||
if (triggerChange) {
|
||||
this.triggerChange();
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.opts.element.val(val);
|
||||
@ -2302,7 +2310,7 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
|
||||
// multi
|
||||
val: function () {
|
||||
var val, data = [], self=this;
|
||||
var val, triggerChange = true, data = [], self=this;
|
||||
|
||||
if (arguments.length === 0) {
|
||||
return this.getVal();
|
||||
@ -2310,11 +2318,17 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
|
||||
val = arguments[0];
|
||||
|
||||
if (arguments.length > 1) {
|
||||
triggerChange = arguments[1];
|
||||
}
|
||||
|
||||
if (!val) {
|
||||
this.opts.element.val("");
|
||||
this.updateSelection([]);
|
||||
this.clearSearch();
|
||||
if (triggerChange) {
|
||||
this.triggerChange();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2326,7 +2340,9 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
data.push({id: $(this).attr("value"), text: $(this).text()});
|
||||
});
|
||||
this.updateSelection(data);
|
||||
if (triggerChange) {
|
||||
this.triggerChange();
|
||||
}
|
||||
} else {
|
||||
if (this.opts.initSelection === undefined) {
|
||||
throw new Error("val() cannot be called if initSelection() is not defined")
|
||||
@ -2337,7 +2353,9 @@ the specific language governing permissions and limitations under the Apache Lic
|
||||
self.setVal(ids);
|
||||
self.updateSelection(data);
|
||||
self.clearSearch();
|
||||
if (triggerChange) {
|
||||
self.triggerChange();
|
||||
}
|
||||
});
|
||||
}
|
||||
this.clearSearch();
|
||||
|
28
test-619.html
Normal file
28
test-619.html
Normal file
@ -0,0 +1,28 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
|
||||
<link href="select2.css" rel="stylesheet"/>
|
||||
<script type="text/javascript" src="select2.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<select id="s1">
|
||||
<option value="A"></option>
|
||||
<option value="B"></option>
|
||||
</select>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$("#s1").select2({}).on("change", function () {
|
||||
alert("Changed caused by val()");
|
||||
}).select2("val", "A");
|
||||
|
||||
// This should not trigger a change
|
||||
$("#s1").select2("val", "B", false);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user