我有这些日期和时间字段,我想设置一个时间的javascript验证。
如果格式无效,它应该使标签可见,否则它应该是不可见的。
这是我到目前为止的代码。
<td nowrap="nowrap" align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="right" nowrap="nowrap">
<span id="startDateLabel">Start date/time: </span>
<input id="startDateStr" name="startDateStr" size="8" onchange="if (!formatDate(this,'USA')) {this.value = '';}" />
<button id="startDateCalendarTrigger">...</button>
<input id="startDateTime" type="text" size="8" name="startTime" value="12:00 AM" onchange="validateHHMM(this.value);"/>
<label id="startTimeLabel" visible="false">Time must be entered in the format HH:MM AM/PM</label>
<BR>
<span id="endDateLabel">End date/time: </span>
<input id="endDateStr" name="endDateStr" size="8" onchange="if (!formatDate(this,'USA')) {this.value = '';}" />
<button id="endDateCalendarTrigger">...</button>
<input id="endDateTime" type="text" size="8" name="endTime" value="12:00 AM" onchange="validateHHMM2(this.value);"/>
<label id="endTimeLabel" visible="false">Time must be entered in the format HH:MM AM/PM</label>
</td>
</tr>
</table>
</td>
问题是标签在加载时会显示,而不管我设置为可见。我尝试了visibility =“hidden”,它仍然显示出来。
以下是验证部分:
<script>
function validateHHMM(inputField) {
var isValid = /^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/.test(inputField.value);
if (isValid) {
document.getElementById("startTimeLabel").style.visibility = "hidden";
}else {
document.getElementById("startTimeLabel").style.visibility = "visible";
}
return isValid;
}
function validateHHMM2(inputField) {
var isValid = /^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/.test(inputField.value);
if (isValid) {
document.getElementById("endTimeLabel").style.visibility = "hidden";
}else {
document.getElementById("endTimeLabel").style.visibility = "visible";
}
return isValid;
}
</script>
那么,我应该怎么做呢? Google会显示不同的验证方法,但不会显示如何隐藏/显示标签
答案 0 :(得分:29)
您正在寻找展示:
document.getElementById("endTimeLabel").style.display = 'none';
document.getElementById("endTimeLabel").style.display = 'block';
修改:您还可以轻松重复使用验证功能。
<强> HTML:强>
<span id="startDateLabel">Start date/time: </span>
<input id="startDateStr" name="startDateStr" size="8" onchange="if (!formatDate(this,'USA')) {this.value = '';}" />
<button id="startDateCalendarTrigger">...</button>
<input id="startDateTime" type="text" size="8" name="startTime" value="12:00 AM" onchange="validateHHMM(this.value, 'startTimeLabel');"/>
<label id="startTimeLabel" class="errorMsg">Time must be entered in the format HH:MM AM/PM</label><br />
<span id="endDateLabel">End date/time: </span>
<input id="endDateStr" name="endDateStr" size="8" onchange="if (!formatDate(this,'USA')) {this.value = '';}" />
<button id="endDateCalendarTrigger">...</button>
<input id="endDateTime" type="text" size="8" name="endTime" value="12:00 AM" onchange="validateHHMM(this.value, 'endTimeLabel');"/>
<label id="endTimeLabel" class="errorMsg">Time must be entered in the format HH:MM AM/PM</label>
<强>使用Javascript:强>
function validateHHMM(value, message) {
var isValid = /^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/.test(value);
if (isValid) {
document.getElementById(message).style.display = "none";
}else {
document.getElementById(message).style.display= "inline";
}
return isValid;
}
答案 1 :(得分:8)
将标签上的visible="false"
更改为style="visibility:hidden"
..
或更好地使用类来显示/隐藏标签..
.hidden{
visibility:hidden;
}
然后在您的标签上添加class="hidden"
并使用您的脚本删除类
document.getElementById("endTimeLabel").className = 'hidden'; // to hide
和
document.getElementById("endTimeLabel").className = ''; // to show
答案 2 :(得分:6)
你可以尝试
if (isValid) {
document.getElementById("endTimeLabel").style.display = "none";
}else {
document.getElementById("endTimeLabel").style.display = "block";
}
单独那些行
答案 3 :(得分:4)
您应该可以通过设置隐藏/显示来隐藏/显示:
.style.display = 'none';
.style.display = 'inline';
答案 4 :(得分:1)
您可以将display属性设置为none来隐藏标签。
<label id="excel-data-div" style="display: none;"></label>