Использование 2 функций одновременно для проверки формы - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь добавить в 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 ]

3 голосов
/ 27 января 2012

Более простая версия

<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']; ?>">
0 голосов
/ 27 января 2012

Вы возвращаете значение первой функции и, следовательно, останавливаете выполнение функции число.

Вам нужно позвонить по номеру в вашей функции checkForm.

<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']; ?>">
0 голосов
/ 27 января 2012

Попробуйте вернуть это вместо:

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

Оператор возврата прекращает выполнение кода процедуры, и функция IsNumber никогда не вызывается.

Кстати: вы можете проверить число, напримерэто:

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