Textarea没有关注,而是提交

时间:2014-09-25 19:18:31

标签: javascript html forms focus textarea

我有一个textarea,它可以捕捉到角色的关键词。计数。我也有一个javascript代码,如果textarea在字段中没有输入任何字符或至少20个字符,则返回false。这是我的脚本:

的Javascript

        function CheckLength() {
            var msg_area = document.getElementById("error2");
            msg_area.innerHTML = "";
            if (document.getElementById("staf_address").value.length < 20) {
                document.getElementById("error1").className = "par control-group error";
                document.getElementById("staf_address").focus();​
                msg_area.innerHTML = "YOU DID NOT ENTER ENOUGH INFORMATION";
                return false;
            } else document.getElementById("addstaf").submit();
        }

HTML

<form class="stdform stdform2" method="post" id="addstaf" action="index.php?site=addstafrev" onsubmit="return CheckLength()" />
    <div id="error1">
    <label for="staf_address">Address</label>
        <span class="field">
        <textarea cols="80" rows="5" name="staf_address" id="staf_address" class="span5 textarea2" maxlength="120" required /></textarea>
        <span class="help-inline" id="error2"></span>
        </span>
    </div><!--par-->
<button type="submit" class="btn btn-primary">Next</button>
</form>

一开始没有任何问题。如果id=staf_address中的字符少于20个字符,则不会提交textarea。该错误将显示在id=error2上。所以,textarea和表单工作正常,没问题。问题是,在提交表单期间,它不会专注于文本区域(如果textarea少于20个字符)。所以,我添加了一行代码:

document.getElementById("staf_address").focus();​

之后,出现了问题。该文档不会检查我的javascript,而是提交表单,尽管textarea只有1个字符。怎么解决这个?

只需要一个普通的javascript。

2 个答案:

答案 0 :(得分:1)

当我将你的代码粘贴到JS Fiddle时,我发现在focus();

之后有一个奇怪的字符

enter image description here

删除它似乎可以解决问题。

preventDefault()是一个事件方法,因此只有在事件对象传递给函数时才能使用它。例如:https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

答案 1 :(得分:0)

当您按下按钮时,表单已提交。您需要使用preventDefault()阻止此操作,这将停止提交,允许您在正确提交之前手动提交之前执行各种功能。

请注意,表单标记内的button默认为提交按钮!