Skip to content

Instantly share code, notes, and snippets.

@Eroica
Last active November 15, 2019 08:50
Show Gist options
  • Save Eroica/cc6919d863b21017f074110ee12b49eb to your computer and use it in GitHub Desktop.
Save Eroica/cc6919d863b21017f074110ee12b49eb to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form id="FruitsList">
<p><label>Oranges <input type="checkbox" name="fruits" value="oranges" ic-get-from="/price" ic-trigger-on="change" ic-target="#Price"></label></p>
<p><label>Apples <input type="checkbox" name="fruits" value="apples" ic-get-from="/price" ic-trigger-on="change" ic-target="#Price"></label></p>
<p><label>Amount <input type="number" name="amount"></label></p>
</form>
<p>Price: <span id="Price"></span></p>
<script src="jquery-3.4.1.min.js"></script>
<script src="intercooler-1.2.3.min.js"></script>
<script src="jquery.mockjax.min.js"></script>
<script>
function parseParams(str) {
var re = /([^&=]+)=?([^&]*)/g;
var decode = function (str) {
return decodeURIComponent(str.replace(/\+/g, ' '));
};
var params = {}, e;
if (str) {
if (str.substr(0, 1) == '?') {
str = str.substr(1);
}
while (e = re.exec(str)) {
var k = decode(e[1]);
var v = decode(e[2]);
if (params[k] !== undefined) {
if (!$.isArray(params[k])) {
params[k] = [params[k]];
}
params[k].push(v);
} else {
params[k] = v;
}
}
}
return params;
}
const fruits = {"oranges": 500, "apples": 700};
$.mockjax({
url: "/price",
dataType: "html",
response: function (settings) {
var params = parseParams(settings.data);
var selectedFruits = [].concat(params["fruits"]);
this.responseText = selectedFruits.filter(name => name).map(name => fruits[name]).reduce((sum, price) => sum + price, 0).toString();
}
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment