[英]How to use HTML5 to validate a date range?
或者, 是否可以使用html5驗證另一個字段的值?
一個常見的例子是選擇日期范圍,其中“from”日期應小於或等於“to”日期。 以下將描述值之間的期望關系,如果只有您可以在語法中使用元素引用:
<input type="date" name="from" max="to"> //todo: populate with ~to.value
<input type="date" name="to" min="from"> //todo: populate with ~from.value
這里, Web Components非常有用,但尚未在所有瀏覽器中完全支持它們。
我們的想法是創建一個簡單的html元素,其中包含兩個子元素(from和to),如下所示:
<div id="fromToDate">
<div></div>
<div></div>
</div>
然后創建一個模板,定義日期選擇器的外觀:
<template id="fromToDateTemplate">
<label for="fromDate">from</label>
<input type="date" class="fromDate" select=":first" required="" />
<label for="toDate">to</label>
<input type="date" class="toDate" select=":last" required="" />
</template>
select參數定義,其中取值為,因此第一個輸入字段從“#fromToDate”獲取第一個div。
最后我們必須填充“影子根”並定義邏輯:
var shadow = document.querySelector('#fromToDate').webkitCreateShadowRoot(),
template = document.querySelector('#fromToDateTemplate');
shadow.appendChild(template.content);
shadow.querySelector(".fromDate").addEventListener("change", function (e) {
var to = this.value;
shadow.querySelector(".toDate").setAttribute("min", this.value);
});
template.remove();
最后,兩個輸入字段被渲染,當在第一個日期選擇器中選擇日期時,第二個日期選擇器不能選擇任何較低的數據。
提琴手示例: http : //jsfiddle.net/cMS9A/
好處:
缺點:
未來閱讀:
可以利用html5驗證機制和一些javascript來動態更新min
/ max
屬性:
//in this case a single input restriction is sufficient to validate the form:
$('#from, #to').on('change', function(){
$('#to').attr('min', $('#from').val());
});
擺弄 。 如果日期選擇器的瀏覽器實現遵循范圍限制(通過禁用所需范圍之外的日期),則min
和max
都可以應用於相應字段以增強UX
如果你想避免某人黑客攻擊/崩潰網站的問題 - 用以下方法驗證輸入數據:
這是保護您和您的網站的唯一(至少第二點)方法。
我很擔心,如何根據其他輸入值驗證輸入值是不可能的。 只有好老的javascript。
但也許您可以使用<input type="range" …>
並設置一些最小步驟(1天/ 1小時/ ...)。 然后,您可以使用同名屬性的min
和max
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.