javascript getElementById()for循环(空文本框验证)

时间:2011-02-12 08:57:50

标签: javascript

我有以下code验证空文本框。如果有空的,表单将无法成功提交。

但是,在点击提交循环遍历元素后,我似乎无法获得弹出窗口的警告,以查找是否有任何空框要填写。

关于循环的任何建议/更正?

3 个答案:

答案 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)

  1. 您没有遵循dom规则。对于每个元素,ID应该是唯一的。你应该有唯一的ID。阅读xhtml指南。

  2. document.getElementById将返回一个元素而不是数组。如果要应用于group.getElementsByClassName等组上的组使用功能。

  3. 表格标签应该有动作。如果你想在同一页面上使用它。行动= “#”

  4. 表单提交时的提交表单不是按钮点击,并且submitform应该返回true为false,具体取决于表单是否有效。

  5. 如果那是出于教育目的那么好。否则使用像jquery这样的框架有很多功能会减少你的工作。