为什么说,我还没有确定我的功能? 难道是因为我已经把文件准备好功能在我的功能? - 也许我不得不提一下,我想用这个功能,防止提交如果我的说法是不正确的。
在我的HTML表单标签:
<form class="text-left" method="post" action="" onsubmit="return myFunction();">
下面是脚本(这个脚本是在我的脑海部分):
$( document ).ready(function() {
//the number generators and sum of the two numbers
var numberOne = Math.floor((Math.random() * 10) + 1);
var numberTwo = Math.floor((Math.random() * 10) + 1);
var sum = numberOne + numberTwo;
//write the math question to the div
document.getElementById("captchaOutput").innerHTML = numberOne+ " og " +numberTwo;
//alert(sum);
function myFunction(){
var humanInput = $('#captchaInput').val();
if(humanInput == sum){
$("#captcha_service_err").css("display", "inline")
$("#captchaInput").css("border-color", "red");
return false;
}
$("#captcha_service_err").css("display", "none")
$("#captchaInput").css("border-color", "");
return true;
}
});
它,因为我已经把我的函数的文档准备功能里面?
是。 函数声明(如var
语句)作用域为他们内声明的功能。
如果你想使用myFunction
作为全球然后移动它,并且变量这取决于,你出去在声明它的匿名函数。
或者,您可以明确地创建一个全局引用它:
window.myFunction = myFunction
最好的解决办法,但是,是摆在首位不使用全局。
取出onsubmit
属性,并用JavaScript绑定你的事件处理程序来代替。
$('form').on('submit', myFunction);
确保你捕获事件对象:
function myFunction(e){
然后阻止默认表单提交的行为,如果你不希望它提交:
$("#captchaInput").css("border-color", "red");
e.preventDefault();
尝试使用window
这里对象:
$( document ).ready(function() {
//the number generators and sum of the two numbers
var numberOne = Math.floor((Math.random() * 10) + 1);
var numberTwo = Math.floor((Math.random() * 10) + 1);
var sum = numberOne + numberTwo;
//write the math question to the div
document.getElementById("captchaOutput").innerHTML = numberOne+ " og " +numberTwo;
//alert(sum);
window.myFunction = function () {
var humanInput = $('#captchaInput').val();
if(humanInput == sum){
$("#captcha_service_err").css("display", "inline")
$("#captchaInput").css("border-color", "red");
return false;
}
$("#captcha_service_err").css("display", "none")
$("#captchaInput").css("border-color", "");
return true;
}
});
这是因为myFunction
是的范围内定义$(document).ready
和外面是不可见的 。 定义它外面再加上它的因变量
//the number generators and sum of the two numbers
var numberOne = Math.floor((Math.random() * 10) + 1);
var numberTwo = Math.floor((Math.random() * 10) + 1);
var sum = numberOne + numberTwo;
$(document).ready(function() {
//write the math question to the div
document.getElementById("captchaOutput").innerHTML = numberOne + " og " + numberTwo;
//alert(sum);
});
function myFunction() {
var humanInput = $('#captchaInput').val();
if (humanInput == sum) {
$("#captcha_service_err").css("display", "inline")
$("#captchaInput").css("border-color", "red");
return false;
}
$("#captcha_service_err").css("display", "none")
$("#captchaInput").css("border-color", "");
return true;
}
更新
删除内联onsbumit
的形式和使用on()
如下面
$( document ).ready(function() {
//the number generators and sum of the two numbers
var numberOne = Math.floor((Math.random() * 10) + 1);
var numberTwo = Math.floor((Math.random() * 10) + 1);
var sum = numberOne + numberTwo;
//write the math question to the div
document.getElementById("captchaOutput").innerHTML = numberOne+ " og " +numberTwo;
//alert(sum);
$('form').on('submit', function(){
var humanInput = $('#captchaInput').val();
if(humanInput == sum){
$("#captcha_service_err").css("display", "inline")
$("#captchaInput").css("border-color", "red");
return false;
}
$("#captcha_service_err").css("display", "none")
$("#captchaInput").css("border-color", "");
return true;
});
});
var sum = 0;
$( document ).ready(function() {
//the number generators and sum of the two numbers
var numberOne = Math.floor((Math.random() * 10) + 1);
var numberTwo = Math.floor((Math.random() * 10) + 1);
sum = numberOne + numberTwo;
//write the math question to the div
document.getElementById("captchaOutput").innerHTML = numberOne+ " og " +numberTwo;
//alert(sum);
});
function myFunction(){
var humanInput = $('#captchaInput').val();
if(humanInput == sum){
$("#captcha_service_err").css("display", "inline")
$("#captchaInput").css("border-color", "red");
return false;
}
$("#captcha_service_err").css("display", "none")
$("#captchaInput").css("border-color", "");
return true;
}