JavaScript表单验证问题:validateSongandTitle函数失效求助
表单歌曲与标题验证函数失效的原因及修复
你的validateSongandTitle函数无法正常工作的核心问题是判断逻辑错误:
- 你通过
document.forms["AddVid"]["songid"].value获取的是下拉框选项的value属性值,而默认选项<option value="">No song selected</option>的value是空字符串"",不是文本内容"No song selected"。 - 所以你的判断条件
b == "No song selected"永远不会成立,导致即使未选歌曲且未填标题,也不会触发错误提示。
修复后的validateSongandTitle函数
function validateSongandTitle() { var b = document.forms["AddVid"]["songid"].value; var c = document.forms["AddVid"]["title"].value; // 先清空之前的错误提示 document.getElementById('formtitle').innerHTML = ""; // 正确判断:当songid的value为空(未选歌曲)且title为空时,验证失败 if (b === "" && c.trim() === "") { document.getElementById('formtitle').innerHTML = "<small><font color='red'>Video title *Required</font></small>"; return false; } return true; }
额外优化建议
- 给
validateYouTube函数也加上清空错误提示的逻辑,避免验证通过后旧提示残留:
function validateYouTube() { var a = document.forms["AddVid"]["ytcode"].value; document.getElementById('formyoutubecode').innerHTML = ""; if (a == null || a.trim() === "") { document.getElementById('formyoutubecode').innerHTML = "<small><font color='red'>YouTube Code Required</font></small>"; return false; } return true; }
- 使用
trim()处理输入值,避免用户输入空格被误判为有效内容。
内容的提问来源于stack exchange,提问作者Mitch
相关产品推荐
相关产品推荐

