Jquery 返回false仅在答案正确时有效?

Jquery 返回false仅在答案正确时有效?,jquery,Jquery,有两个数字。用户填写答案并单击输入或“下一步”按钮(激活表单) 我希望表单总是“返回false”,因为接下来的所有操作都加载了javascript。 只要用户不断填写正确的答案,它就会工作,但当您填写错误的答案时,它会首先显示“嘿,你,这是什么?”框,但当用户再次尝试回答时,整个页面会重新加载:/ 你可以在这里看到: HTML 2. * 6. = 不是真的: 下一个 JS: $(函数(){ 函数biggestNumber(){ 返回Math.max.apply(这是参数); } $(“#

有两个数字。用户填写答案并单击输入或“下一步”按钮(激活表单)

我希望表单总是“返回false”,因为接下来的所有操作都加载了javascript。 只要用户不断填写正确的答案,它就会工作,但当您填写错误的答案时,它会首先显示“嘿,你,这是什么?”框,但当用户再次尝试回答时,整个页面会重新加载:/

你可以在这里看到:

HTML


2.
*
6.
=
不是真的:

下一个
JS:

$(函数(){
函数biggestNumber(){
返回Math.max.apply(这是参数);
}
$(“#挑战”).submit(函数(){
first=$(“.first”).text();
秒=$(“.second”).text();
correctAnswer=parseInt($(“.first”).text())*parseInt($(“.second”).text());//parseInt=omvandla text直到siffra..och slåihop de tvårt råtta svar
答案=$(“.answerInput”).val()//在för svar中的Vad har an vändaren skrivit?
警报(“第一个”+第一个);
//检查答案是否正确
如果(答案==正确答案){
//创建新号码
var randomNum=1+Math.ceil(Math.random()*12);/*选择1到12之间的随机数*/
$('.first').text(随机数);
var randomNum=1+Math.ceil(Math.random()*12);/*选择1到12之间的随机数*/
$('.second').text(随机数);
}否则{
//向做测试的人展示
$(“#不是真的”)。向下滑动(“快速”);
$(“h1”).slideUp(“中”);
biggestNumber=biggestNumber(第一、第二);//en funktion somär inlagd längre upp!!
如果(最大数字==第一个){//Om största numret=första numret,dår det,det andra numret vi vill stapla upp,annarsär det ju första sifran vi vill stapla upp“största sifran antalet gånger”。
另一个数=秒;
}否则{
另一个数=第一个;
}
staplaUpp=theOtherNumber;//Börja med att lägga在den mindre siffran en gång först,och sedan för varje直到“+siffran”
对于(变量i=0;i
无需返回false。此-(theAnswer==correctAnswer)已为false,脚本知道。。因此,请删除return false一行。

通常,第二次提交失败的表单表示javascript事件处理程序中存在阻止其返回false的错误。要调试这些,在浏览器中使用javascript控制台,并在页面之间导航时保留日志信息是非常有用的。(此选项在webkit调试器中称为
导航时保留日志
)。使用这种技术,我发现:

Uncaught TypeError: number is not a function skolresurser.se:137
(anonymous function)
看看这段代码,我可以看到问题在这里:

biggestNumber = biggestNumber(first,second); //en funktion som är inlagd längre upp!!
当您将
biggestNumber
赋值给函数本身的返回值时,您将用数字
biggestNumber
覆盖函数
biggestNumber
。然后,第二次单击submit按钮时,代码失败

相反,您应该将该返回值指定给不同的变量:

     var bigNum = biggestNumber(first,second); //en funktion som är inlagd längre upp!!
       if(bigNum==first){ //Om största numret = första numret, då är det, det andra numret vi vill stapla upp, annars är det ju första siffran vi vill stapla upp "största siffran antalet gånger".
        theOtherNumber=second; 
       }else{
        theOtherNumber=first; 
       }
      staplaUpp = theOtherNumber;  //Börja med att lägga in den mindre siffran en gång först, och sedan för varje till  " +siffran "

       for(var i = 0; i < bigNum-1; i++) { //För varje antal det finns av den mindre siffran, stapla upp den med plus emellan!
            staplaUpp = staplaUpp + '<span style="margin:0 0.2em;">+</span>'+theOtherNumber;
        }
       $("#actually").append(staplaUpp); 
$(function() {
    function biggestNumber() {
        return Math.max.apply(this, arguments);
    }

    $("#theChallenge").submit(function(e) {


        e.preventDefault();  //<--HERE


        first = $(".first").text();
        second = $(".second").text();
        correctAnswer = parseInt($(".first").text()) * parseInt($(".second").text()); //parseInt = omvandla text till siffra.. och slå ihop de två alternativen!  och detta är då vårt rätta svar
        theAnswer = $(".answerInput").val() //Vad har användaren skrivit in för svar?

        //Check if answer is correct
        if (theAnswer == correctAnswer) {
            //Create new numbers
            var randomNum = 1 + Math.ceil(Math.random() * 12); /* Pick random number between 1 and 12 */
            $('.first').text(randomNum);
            var randomNum = 1 + Math.ceil(Math.random() * 12); /* Pick random number between 1 and 12 */
            $('.second').text(randomNum);
        } else {
            //Show the person doing the test that
            $("#notReally").slideDown('fast');
            $("h1").slideUp('medium');


            var biggestNumber = biggestNumber(first, second); //en funktion som är inlagd längre upp!! 
            //^--HERE


            if (biggestNumber == first) { //Om största numret = första numret, då är det, det andra numret vi vill stapla upp, annars är det ju första siffran vi vill stapla upp "största siffran antalet gånger".
                theOtherNumber = second;
            } else {
                theOtherNumber = first;
            }
            staplaUpp = theOtherNumber; //Börja med att lägga in den mindre siffran en gång först, och sedan för varje till  " +siffran "
            for (var i = 0; i < biggestNumber - 1; i++) { //För varje antal det finns av den mindre siffran, stapla upp den med plus emellan!
                staplaUpp = staplaUpp + '<span style="margin:0 0.2em;">+</span>' + theOtherNumber;
            }
            $("#actually").append(staplaUpp);

        }

        $(".answerInput").val('');
        alert('first' + first);
        return false;
    });


});​
var bigNum=biggestNumber(第一,第二)//这是一个很好的例子!!
如果(bigNum==first){//Om största numret=första numret,dår det,det andra numret vi vill stapla upp,annarsär det ju första sifran vi vill stapla upp“största sifran antalit gånger”。
另一个数=秒;
}否则{
另一个数=第一个;
}
staplaUpp=其他编号//Börja med att lägga在den mindre siffran en gång först,och sedan för varje直到“+siffran”
对于(变量i=0;i

然后下次调用您的
biggestNumber
函数时,它仍然是一个
函数。

似乎您需要
prevetDeafult
整体提交操作,以及重定义biggestNumber的问题,我使用本地化变量解决了重定义问题:

     var bigNum = biggestNumber(first,second); //en funktion som är inlagd längre upp!!
       if(bigNum==first){ //Om största numret = första numret, då är det, det andra numret vi vill stapla upp, annars är det ju första siffran vi vill stapla upp "största siffran antalet gånger".
        theOtherNumber=second; 
       }else{
        theOtherNumber=first; 
       }
      staplaUpp = theOtherNumber;  //Börja med att lägga in den mindre siffran en gång först, och sedan för varje till  " +siffran "

       for(var i = 0; i < bigNum-1; i++) { //För varje antal det finns av den mindre siffran, stapla upp den med plus emellan!
            staplaUpp = staplaUpp + '<span style="margin:0 0.2em;">+</span>'+theOtherNumber;
        }
       $("#actually").append(staplaUpp); 
$(function() {
    function biggestNumber() {
        return Math.max.apply(this, arguments);
    }

    $("#theChallenge").submit(function(e) {


        e.preventDefault();  //<--HERE


        first = $(".first").text();
        second = $(".second").text();
        correctAnswer = parseInt($(".first").text()) * parseInt($(".second").text()); //parseInt = omvandla text till siffra.. och slå ihop de två alternativen!  och detta är då vårt rätta svar
        theAnswer = $(".answerInput").val() //Vad har användaren skrivit in för svar?

        //Check if answer is correct
        if (theAnswer == correctAnswer) {
            //Create new numbers
            var randomNum = 1 + Math.ceil(Math.random() * 12); /* Pick random number between 1 and 12 */
            $('.first').text(randomNum);
            var randomNum = 1 + Math.ceil(Math.random() * 12); /* Pick random number between 1 and 12 */
            $('.second').text(randomNum);
        } else {
            //Show the person doing the test that
            $("#notReally").slideDown('fast');
            $("h1").slideUp('medium');


            var biggestNumber = biggestNumber(first, second); //en funktion som är inlagd längre upp!! 
            //^--HERE


            if (biggestNumber == first) { //Om största numret = första numret, då är det, det andra numret vi vill stapla upp, annars är det ju första siffran vi vill stapla upp "största siffran antalet gånger".
                theOtherNumber = second;
            } else {
                theOtherNumber = first;
            }
            staplaUpp = theOtherNumber; //Börja med att lägga in den mindre siffran en gång först, och sedan för varje till  " +siffran "
            for (var i = 0; i < biggestNumber - 1; i++) { //För varje antal det finns av den mindre siffran, stapla upp den med plus emellan!
                staplaUpp = staplaUpp + '<span style="margin:0 0.2em;">+</span>' + theOtherNumber;
            }
            $("#actually").append(staplaUpp);

        }

        $(".answerInput").val('');
        alert('first' + first);
        return false;
    });


});​
$(函数(){
函数biggestNumber(){
返回Math.max.apply(这是参数);
    }
$(“#挑战”)。提交(功能(e){

e.preventDefault();//如果我删除了return false,即使答案是正确的,它也会重新加载页面。为什么不在其他地方返回false呢?我现在试过了,还是同样的问题现在它工作得很好!:)请告诉学习时间表的孩子们使用它进行练习:)这里也有相同的发现,但我只是用
var biggestNumber=biggestNumber(第一,第二)
ahh解决了这个问题,只要我将它定义为变量,我仍然可以使用相同的名称。Cool不知道。我想如果我确实更改了名称,以便更容易地将其分开。谢谢!:)