npm-polymer-elements
Version:
Polymer Elements package for npm
145 lines (105 loc) • 3.65 kB
HTML
<!--
@license
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
<title>iron-validator-behavior demo</title>
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="../../iron-meta/iron-meta.html">
<link rel="import" href="../../paper-styles/paper-styles.html">
<link rel="import" href="cats-only.html">
<link rel="stylesheet" href="../../paper-styles/demo.css">
<style>
.valid {
color: limegreen;
}
.invalid {
color: red;
}
</style>
</head>
<body>
<template is="dom-bind">
<cats-only></cats-only>
<section>
<p>
only type <code>cats</code>:
<input on-input="_onInput">
<span class="valid" hidden$="[[!valid]]">valid</span>
<span class="invalid" hidden$="[[valid]]">invalid</span>
</p>
</section>
<section>
<p>
only type <code>cats</code> across both input fields:
<span on-input="_onInputMulti">
<input>
<input>
</span>
<span class="valid" hidden$="[[!validMulti]]">valid</span>
<span class="invalid" hidden$="[[validMulti]]">invalid</span>
</p>
</section>
<section>
<p>
only type <code>cats</code> in the form:
<form on-submit="_onSubmit">
<label>
Type something: <input name="something">
</label>
<br>
<label>
Your favorite pet:
<select name="pet">
<option>iguanas</option>
<option>cats</option>
<option>pancakes</option>
</select>
</label>
<br>
<button type="submit">submit!</button>
<span class="valid" hidden$="[[!validForm]]">valid</span>
<span class="invalid" hidden$="[[validForm]]">invalid</span>
</form>
</p>
</section>
</template>
<script>
document.addEventListener('WebComponentsReady', function() {
var validator = new Polymer.IronMeta({type: 'validator'}).byKey('cats-only');
var scope = document.querySelector('template[is=dom-bind]');
scope.valid = scope.validMulti = scope.validForm = true;
scope._onInput = function(event) {
this.valid = validator.validate(event.target.value);
};
scope._onInputMulti = function(event) {
var values = [];
var nodes = Polymer.dom(event.currentTarget).querySelectorAll('input');
for (var node, i = 0; node = nodes[i]; i++) {
values.push(node.value);
}
this.validMulti = validator.validate(values);
};
scope._onSubmit = function(event) {
event.preventDefault();
var data = {};
for (var el, i = 0; el = event.target.elements[i]; i++) {
if (el.name) {
data[el.name] = el.value;
}
}
this.validForm = validator.validate(data);
};
});
</script>
</body>