无法从外部返回功能或方法?

时间:2012-01-19 10:17:41

标签: javascript html eclipse jsp

在开发Web应用程序时,我想执行某些验证检查,并且只有在成功验证后才需要发布表单并将控件重定向到下一页。

JavaScript代码:

function fnCheckEmptyField()
{
    var strDomain = document.getElementsByName("txtIIDN").value;
    if (strDomain == null)
    {
        document.getElementById("lblValidityStatus").innerHTML = "";
        document.getElementById("lblValidityStatus").innerHTML = "Domain Name Field Can't be Left Blank";
        return false;
    }
    else
    {
        return true; 
    }
}

相关的HTML代码:

<form action="Result.jsp" name="validityCheck" onsubmit="return fnCheckEmptyField()">
    <input type="text" id="txtIIDN"/>
    <input type="submit" id="btnValidityCheck" value="Check Validity" />
</form>

onsubmit="return fnCheckEmptyField()"显示错误无法从函数或方法外部返回,并且在执行JavaScript函数表单后,无论文本字段是否为空,都会提交。

我已将警报放在if条件中,并确保如果字段为空,则函数返回false

我不知道我的代码有什么问题以及为什么的错误无法从函数或方法外部返回

原因是什么?如何解决?

5 个答案:

答案 0 :(得分:13)

  

显示错误的行onsubmit="return fnCheckEmptyField()"无法从函数或方法外部返回

这是Eclipse特有的。 Eclipse在这里是错误的,这条线非常好。只是忽略Eclipse错误。如果需要,您可以随时禁用其JS验证。


  

并且在执行java脚本函数表单后,无论文本字段是否为空,都会提交。

那是因为你的JavaScript函数错了。你的JS代码中有2个错误。

  1. getElementsByName()来电不正确。

    var strDomain = document.getElementsByName("txtIIDN").value;
    

    要按ID检索元素,您需要getElementById()

    var strDomain = document.getElementById("txtIIDN").value;
    
  2. 空值不是null,而只是空字符串。

    if (strDomain == null)
    

    您需要检查其长度。

    if (strDomain.length == 0)
    

    或者只使用JS布尔魔法。

    if (!strDomain)
    
  3. 顺便说一下,此代码中不需要行document.getElementById("lblValidityStatus").innerHTML = "";

答案 1 :(得分:1)

从onsubmit attribut中删除“return” 你的代码应该是这样的

<form action="Result.jsp" name="validityCheck" onsubmit="fnCheckEmptyField()">

<input type="text" id="txtIIDN"/>
</form>

希望这能解决你的问题: - )

答案 2 :(得分:1)

此外,

var strDomain= document.getElementsByName("txtIIDN").value;

应该是

var strDomain= document.getElementById("txtIIDN").value;

文本字段有id,而不是名称

答案 3 :(得分:0)

我不是javascript专家,但我认为你应该在HTML的onsubmit参数中丢失return关键字;如下所示:

onsubmit="fnCheckEmptyField()"

编辑:抱歉与之前的回答同时发布

答案 4 :(得分:0)

从表格标签中删除操作。

function fnCheckEmptyField() 
{ 
   var strDomain= document.getElementsByName("txtIIDN").value; 
   if(strDomain == null) 
   {
      document.getElementById("lblValidityStatus").innerHTML=""; 
      document.getElementById("lblValidityStatus").innerHTML="Domain Name Field Can't be Left Blank";
   } 
   else 
   { 
      window.navigate("top.jsp");
   } 
}