Javascript返回false值

时间:2014-06-28 05:09:44

标签: javascript validation onsubmit

嘿伙计们我为我的网站写了3个函数,它们看起来像这样:

function val_mail(mail)
{

    if(!isNaN(mail))
    {
        alert("Ungültige E-Mail!");
        return false;   
    }
    if(mail.indexOf('.')===-1 || mail.indexOf('@')===-1)
    {
        alert("Ihre Email enthält keinen Punkt, oder @ Zeichen");
        return false;
    }

    return true;
}

function check_numeric(form_value)
{


    if(form_value.indexOf("€")!==-1)
    {
        alert("Bitte keine €-Zeichen anfügen, geben Sie bitte nur Numerische werte an");
        return false;
    }

    if(isNaN(form_value))
    {
        alert("Wert ist nicht numerisch!");
        return false;
    }
    else
    {
    return true;
    }
}

function val_steuernummer(steuernummer)
{
    if(isNaN(steuernummer))
    {
        return false;   
    }
    if(steuernummer/100000000 < 1)
    {
        return false;   
    }
    if(steuernummer/100000000 > 10)
    {
        return false;   
    }
    return true;
}

当我在Javascript控制台中测试这些函数时,一切正常,但如果我想将这些函数组合到一个函数中检查所有3个值,它就不起作用。虽然我不确定此代码是否有效:onSubmit="return check_all()"

你能告诉我如何编写一个能检查所有内容的函数吗?

****** ********新闻 使用此代码:

function check_all(mail,steuernummer,kinder)
{
    return val_mail(mail) &&val_steuernummer(steuernummer) && check_numeric(kinder);
}

这个命令在Javascript控制台中

check_all('hey@me.de','123456789','7')

它返回true,但是当我想在html文件中使用它时它不起作用?

这个Initialazon是否正确:

var steuernummer = $("#steuernummer");
var kinder = $("#kidner_anzahl");
var mail = $("#mail");
NOTE: These are global variables

这是onSubmit正确吗?

<form name="fragebogen" action="next.php" method="post" onSubmit="return check_all()" id="formular">

1 个答案:

答案 0 :(得分:0)

你可以这样做:

function check_all() {

  /* get values to pass to functions */
  var mail = ...
  var form_value = ...
  var steuernummer = ...

  return val_mail(mail) &&
         val_steuernummer(steuernummer) && 
         check_numeric(form_value);
}

修改

与onsubmit属性无关,与你如何调用 check_all

无关
  

这个Initialazon是否正确:

     

var steuernummer = $(“#steuernummer”);   var kinder = $(“#kidner_anzahl”);   var mail = $(“#mail”);注意:这些是全球性的   变量

没有。猜测,你传递jQuery(虽然其他库使用 $ 和选择器)并且正在将jQuery对象传递给函数,而不是相关控件的值。大概你想要调用控件的值,所以传递它们:

function check_all() {
  return val_mail(mail.val()) &&
         val_steuernummer(steuernummer.val()) && 
         check_numeric(kinder.val());
}

实现此目的的最简单方法是在提交侦听器中传递对表单的引用:

<form ... onsubmit="return check_all(this)">

然后在函数中:

function check_all(form) {
  return val_mail(form.mail.value) &&
         val_steuernummer(form.steuernummer.value) && 
         check_numeric(form.kidner_anzahl.value);
}

如果您发布一个“工作”示例,并将其减少到显示问题的最小值,那么它会有很大帮助。然后其他人不想猜测他们看不到的东西。