javascript onsubmit 未触发

javascript onsubmit not firing

我有一个不会触发的功能,但我终究无法弄清楚原因。希望有人能看到我遗漏的东西...

在页眉中

<script type="text/javascript">
<!--
function confTakeIt(asdate,astime,aetime) {
    var ans = confirm("Are you sure you want to signup for this OT?\n\n" + asdate + " " + $astime + " to " + $aetime);  
    if (ans) {
            return true;
    } else {
            return false;
    }
}
//-->
</script>

调用上述函数的页面有几种不同的形式

<form method="post" name="takeIT" id="takeIT" action="takeOT.php" onsubmit="return confTakeIt('Sat 05-30-15','1530','0400')"><input type=hidden name="sumsg"><input type=hidden name="action" value="Add"><input type=hidden name="otid" value="61"><input type="image" src="/images/signup-sign.png" width=70 border=0 alt="Sign Up" value="submit"></form>

<form method="post" name="takeIT" id="takeIT" action="takeOT.php" onsubmit="return confTakeIt('Wed 06-03-15','1800','0630')"><input type=hidden name="sumsg"><input type=hidden name="action" value="Add"><input type=hidden name="otid" value="63"><input type="image" src="/images/signup-sign.png" width=70 border=0 alt="Sign Up" value="submit"></form> 

return 放到 onsubmit 中,这样它就可以调用 confTakeIt 函数:

onsubmit="confTakeIt('Sat 05-30-15','1530','0400')"

您使用了错误的变量名

function confTakeIt(asdate, astime, aetime) {
    //variable names are astime and aetime not $astime and $aetime
    var ans = confirm("Are you sure you want to signup for this OT?\n\n" + asdate + " " + astime + " to " + aetime);
    if (ans) {
        return true;
    } else {
        return false;
    }
}

演示:Fiddle

你也可以这样做:

只是简单地 return ans 的值,同时删除 $ 符号

function confTakeIt(asdate,astime,aetime) {
    var ans = confirm("Are you sure you want to signup for this OT?\n\n" + asdate + " " + astime + " to " + aetime);  
    return ans; //[OK] returns 'true' otherwise 'false'
}