generated from tod/odin-webpack-template
			Constraint API: using setCustomValidity for country & ZIP
This commit is contained in:
		
							parent
							
								
									27117cd641
								
							
						
					
					
						commit
						84cb547df8
					
				| 
						 | 
				
			
			@ -12,10 +12,9 @@
 | 
			
		|||
      <input name="email" id="email" type="email" required placeholder="Email (christopher@example.com)">
 | 
			
		||||
 | 
			
		||||
      <input name="country" id="country" type="text" list="countries-list" required placeholder="Country (United Kingdom)">
 | 
			
		||||
      <output id="country-info"></output>
 | 
			
		||||
      <datalist id="countries-list"></datalist>
 | 
			
		||||
 | 
			
		||||
      <input name="zip" id="zip" type="text" required placeholder="ZIP code (12-345)" pattern="\d{2}-\d{3}">
 | 
			
		||||
      <input name="zip" id="zip" type="text" required placeholder="ZIP code (12-345)">
 | 
			
		||||
 | 
			
		||||
      <input name="password" id="password" type="password" required placeholder="Password (Pa$Sw0rD)">
 | 
			
		||||
      <div id="password-check">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										23
									
								
								src/main.js
								
								
								
								
							
							
						
						
									
										23
									
								
								src/main.js
								
								
								
								
							| 
						 | 
				
			
			@ -48,16 +48,25 @@ document.addEventListener("DOMContentLoaded", () => {
 | 
			
		|||
      alert("Hold up, one or more fields are invalid! Try again");
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  countryInput.addEventListener("input", () => {
 | 
			
		||||
    countryInput.setAttribute(
 | 
			
		||||
      "input-valid",
 | 
			
		||||
      countryInput.value.search(COUNTRY_REGEX) >= 0,
 | 
			
		||||
    );
 | 
			
		||||
    const valid = countryInput.value.search(COUNTRY_REGEX) >= 0;
 | 
			
		||||
    countryInput.setAttribute("input-valid", valid);
 | 
			
		||||
    if (valid) {
 | 
			
		||||
      countryInput.setCustomValidity("");
 | 
			
		||||
    } else {
 | 
			
		||||
      countryInput.setCustomValidity("Invalid country");
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  countryInput.addEventListener("change", () => {
 | 
			
		||||
    document.querySelector("#country-info").textContent =
 | 
			
		||||
      countryInput.value.search(COUNTRY_REGEX) >= 0 ? "" : "Invalid country";
 | 
			
		||||
  zipInput.addEventListener("input", () => {
 | 
			
		||||
    const valid = zipInput.value.search(/\d{2}-\d{3}/) >= 0;
 | 
			
		||||
    zipInput.setAttribute("input-valid", valid);
 | 
			
		||||
    if (valid) {
 | 
			
		||||
      zipInput.setCustomValidity("");
 | 
			
		||||
    } else {
 | 
			
		||||
      zipInput.setCustomValidity("ZIP Code format should be 12-345");
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  passwordInput.addEventListener("input", checkPasswordValidity);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue