如何用jQuery区分input date控件的空值与不完整/无效值?
区分date输入框的空值与不完整/格式错误情况
直接用jQuery的.val()确实做不到区分——因为原生date类型输入框的规则就是:只有输入内容是符合规范的有效日期时,才会返回ISO格式的字符串,否则一律返回空字符串,不管是用户完全没输入,还是输入了不完整的内容(比如dd/05/2024)。
要区分这两种情况,可以用浏览器提供的valueAsDisplayed属性,它能直接获取用户在输入框里看到的原始显示内容,不管格式是否有效:
// 获取输入框的显示值 const displayedVal = $('#myDate').prop('valueAsDisplayed'); // 获取标准值(和.val()结果一致) const standardVal = $('#myDate').val(); // 判断逻辑 if (displayedVal === '') { // 用户完全没输入,是空值 console.log('空值:未输入任何内容'); } else if (standardVal === '') { // 有显示内容但不是有效日期,属于格式错误/不完整 console.log('格式错误/不完整:输入了内容但不符合日期规范'); } else { // 有效日期 console.log('有效日期:', standardVal); }
需要注意的是,valueAsDisplayed属性在现代主流浏览器(Chrome、Firefox、Edge等)都支持,IE浏览器不兼容,但目前IE已经被淘汰,基本不用考虑。
内容的提问来源于stack exchange,提问作者m3t4l
相关产品推荐
相关产品推荐

