0

我试图将验证表单的 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']; ?>">

第一个功能有效,但仅允许数字和小数点的第二个功能无效。(不确定第二个功能是否正确)

有人能帮帮我吗?

真挚地

4

3 回答 3

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']; ?>">
于 2012-01-27T11:15:45.520 回答
0

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

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

<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']; ?>">
于 2012-01-27T10:56:26.503 回答
0

尝试返回这个:

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

return 语句停止执行后续代码,并且永远不会调用 IsNumber 函数。

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

function IsNumeric(txt){ return parseFloat(txt) == txt; }
于 2012-01-27T10:54:42.940 回答