只有当所有先前的函数返回false时才启动函数

时间:2013-01-14 17:40:53

标签: javascript html

我是javascripts的新手,请原谅我,如果这看起来很明显但我想要的是如果以前的函数操作的所有条件都返回false则启动第二个函数

function validateForm()
{
    var file = document.getElementById('file');
        if (file.files[0].size >= 11000000) {

        alert('File too Big');
        return false;
    }

    var x=document.forms["myForm"]["title"].value;
         if (x==null || x==""){

        alert("First name must be filled out");
        return false;
    }

    // if both returned false then start this function:

    function start_Uploading(){
        document.getElementById('message').innerHTML = 'Loading...';

       return true;
    }

html:

<input type='submit'  onclick="return validateForm();">

4 个答案:

答案 0 :(得分:1)

您只能从函数返回一次,因此您必须返回错误值的二进制AND:

function validateForm()
{
    var condition1;
    var condition2;

    if(...) condition1 = false;
    if(...) condition2 = false;

    return (condition1 && condition2);
}

如果validateForm返回false,则启动函数的方法如下:

if(!validateForm())
{
     // Execute your function
     start_Uploading();
}

答案 1 :(得分:1)

您的返回值结束函数调用。您只想设置一个变量以查看输入是否有效。然后,您可以检查并查看isValid是否为true,并从那里调用您的函数。

另外值得注意的是您的原始代码

function start_Uploading(){...}

实际上并没有运行该功能,只是定义了它。您需要start_uploading()来执行该功能。

function validateForm()
{
    var isValid = true;
    var file = document.getElementById('file');
    if (file.files[0].size >= 11000000) {
        alert('File too Big');
        isValid=false;
    }

    var x=document.forms["myForm"]["title"].value;
    if (x==null || x==""){
        alert("First name must be filled out");
        isValid=false;
    }

    // if both returned false then start this function:

    function start_Uploading(){
        document.getElementById('message').innerHTML = 'Loading...';
        return true;
    }
    if(isValid){
        start_Uploading();
    }
}

答案 2 :(得分:1)

调用此函数,它将检查第一个函数和第二个函数值,如果它们返回false,则start_Uploading()函数将执行:

function sampleFunction() {
                if(!firstFunction() && !secondFunction()){
                    start_Uploading();
                } 
            }

答案 3 :(得分:1)

以jQuery的方式:

<script type="text/javascript">
$("#myForm").submit(function() {
    if ($("#file")[0].files[0].size >= 11000000) {
        alert('File too Big');
        return false;
    }

    if ($("#myForm input[name=title]").attr("value") == ""){
        alert("First name must be filled out");
        return false;
    }

    $('#message').html('Loading...');
    return true;
})
</script>
<form id="myForm">
    <input type='submit'>
</form>