答案 0 :(得分:2)
将onSubmit移动到标签而不是“提交”按钮,对于一个......它不会在适当的时间触发事件。应该是这样的:
<form action="whatever" onSubmit="return submitform();">
同时更改函数的最后一行
else document.forms[0].submit();
到
return true;
这应该可以解决它无法正常运行的问题,并且不会拦截表单的提交。
此外,您不应该有多个具有相同ID的项目。它不是有效的HTML,可能会导致某些浏览器出现问题*咳嗽* IE *咳嗽*,尽管在这种情况下你可能会侥幸逃脱。
答案 1 :(得分:1)
您可能需要阅读jsfiddle documentation。
Here 您将找到代码的工作版本。 (更正的)功能:
function submitform() {
var msg = ''
,elems = document.getElementById('tasks').getElementsByTagName('input');
for (var i = 0; i < elems.length; i++) {
if (elems[i].id && elems[i].id.match(/^t/i) &&
elems[i].value.replace(/^\s+|\s+$/,'') === '')
{
msg += elems[i].id+ ' is empty!\n';
}
}
if (msg.length > 0) {
alert("one or more of the inputs is/are empty\n"+msg);
return false
}
else alert('we are cool');
return true;
}
稍微复杂一点:http://jsfiddle.net/GbX8m/4/
答案 2 :(得分:1)
您没有遵循dom规则。对于每个元素,ID应该是唯一的。你应该有唯一的ID。阅读xhtml指南。
document.getElementById将返回一个元素而不是数组。如果要应用于group.getElementsByClassName等组上的组使用功能。
表格标签应该有动作。如果你想在同一页面上使用它。行动= “#”
表单提交时的提交表单不是按钮点击,并且submitform应该返回true为false,具体取决于表单是否有效。
如果那是出于教育目的那么好。否则使用像jquery这样的框架有很多功能会减少你的工作。