同时使用2个函数来验证表单

时间:2012-01-27 10:51:42

标签: javascript validation isnumeric

我试图将javascript函数放到验证表单中,但是无法使其正常工作。 这就是我所拥有的:

<script type="text/javascript" language="JavaScript">
    function checkForm(f)
    {
        if (f.elements['val1'].value == "")
        {
            alert("Por favor insere o valor correcto do subsidio");
            return false;
        }
        else
        {
            f.submit();
            return false;
        }
    }

    function IsNumeric(sText)
    {
       var ValidChars = "0123456789.";
       var IsNumber=true;
       var Char;

       for (i = 0; i < sText.length && IsNumber == true; i++) 
       { 
           Char = sText.charAt(i); 
           if (ValidChars.indexOf(Char) == -1) 
           {
               alert("O valor que introduziu não é válido");
               IsNumber = false;
           }
       }
       return IsNumber;
    }
</script>

    <form method="post" onSubmit="return checkForm(this); return IsNumeric(this); return false;" action="<?php echo $_SERVER['PHP_SELF']; ?>">

第一个函数有效,但第二个函数只允许数字和小数点不起作用。 (不确定第二个功能是否正确)

有人可以帮帮我吗?

此致

3 个答案:

答案 0 :(得分:3)

更简单的版本

<script type="text/javascript" language="JavaScript">
function checkForm(f) {
  var val = f.elements['val1'].value; 
  if (val.length==0) { // blank
    alert("Por favor insere o valor");
    return false;
  }
  if (isNaN(val)) { // not numeric
    alert("Por favor insere o valor correcto do subsidio");
    return false;
  }
  // here the value is a number and filled in
  return true; // no need for else after a return
}
</script>

<form method="post" onSubmit="return checkForm(this);" action="<?php echo $_SERVER['PHP_SELF']; ?>">

答案 1 :(得分:0)

请尝试返回此内容:

<form onSubmit="return checkForm(this) && IsNumeric(this.elements['val1'].value)">

return语句停止执行正在进行的代码,并且永远不会调用IsNumber函数。

顺便说一下:您可以验证这样的数字:

function IsNumeric(txt){ return parseFloat(txt) == txt; }

答案 2 :(得分:0)

您将返回第一个函数的值,因此停止运行is number函数。

您需要在checkForm函数中调用is。

<script type="text/javascript" language="JavaScript">
function checkForm(f)
{
    if (f.elements['val1'].value == "")
    {
        alert("Por favor insere o valor correcto do subsidio");
        return false;
    }
    else
    {
        return IsNumeric(f.elements['val1'].value);
    }
}

    function IsNumeric(sText)

    {
       var ValidChars = "0123456789.";
       var IsNumber=true;
       var Char;


       for (i = 0; i < sText.length && IsNumber == true; i++) 
          { 
          Char = sText.charAt(i); 
          if (ValidChars.indexOf(Char) == -1) 
             {
            alert("O valor que introduziu não é válido");
             IsNumber = false;
             }
          }
       return IsNumber;

       }
    </script>

    <form method="post" onSubmit="return checkForm(this);" action="<?php echo $_SERVER['PHP_SELF']; ?>">