2012-06-19 2 views
1

У меня странная проблема в том, что моя функция работает так, как должна (генератор jQuery sweepstake), но не отображает вывод, если я не нажму кнопку «Назад» в браузере. Код:Результат jQuery не отображается, если я не нажму кнопку «назад»

$(document).ready(function() { 
$("input[name=Submit]").click(function() { 
    var x = $("input[name=playerNumber]").val(); 
    var y = $("input[name=teamNumber]").val(); 
    var playerArray = new Array(x); 
    var teamArray = new Array(y); 
    var areaToAddTo = $('#playerArea'); 
    for (var i = 0; i < x; i++) { 
     playerArray[i] = prompt("What is the name of player "+(i+1)+"?"); 
    } 
    for (var j = 0; j < y; j++) { 
     teamArray[j] = prompt("What is the name of team "+(j+1)+"?"); 
    } 
    var teamsToLeaveOut = teamArray.length % playerArray.length; 
    var count = 0; 
    var randomNumber; 
    while (count < teamsToLeaveOut) { 
     randomNumber = Math.floor(Math.random()*(teamArray.length)); 
     teamArray.splice(randomNumber, 1); 
     count++; 
    } 
    count = teamArray.length; 
    var spliceTeam; 
    var l; 
    while (count > 0) { 
     for (i = 0; i < playerArray.length; i++) { 
      randomNumber = Math.floor(Math.random()*teamArray.length); 
      spliceTeam = teamArray[randomNumber]; 
      l += ('<h3>'+playerArray[i]+'</h3>'); 
      l += ('<p>'+spliceTeam+'</p>'); 
      teamArray.splice(randomNumber,1); 
      count--; 
     } 
    } 
    if (1 == 1) { 
     areaToAddTo.append(l); 
    } 
}); 
}); 

На не работает функция ничего не записывается на экран и браузер URL является: /sweepstake.html?playerNumber=2&teamNumber=5&Submit=Submit

При нажатии на кнопку назад выход, как должно быть, и браузер URL является : /sweepstake.html

Любые предложения относительно того, как исправить это?

Спасибо.

+3

'if (1 == 1)' ?? – jbrtrnd

+2

Является 'input [name = Submit]' фактической кнопкой отправки? Если это так, похоже, вы публикуете свою форму, когда не хотите. Вы можете «возвращать false», чтобы предотвратить действие по умолчанию (в данном случае, обрабатывать щелчок на кнопке) и прекратить распространение (тем самым предотвращая пузырирование события DOM). –

+0

@JBRTRND Ну, есть особые случаи, когда 1 не равно 1. Как когда 1 переопределяется или что-то в этом роде. – raina77ow

ответ

3

Ваша форма отправляется, предотвращает подачу, и вам не придется возвращаться к ней.

... 
    if (1 == 1) { // ?? 
     areaToAddTo.append(l); 
    } 
    return false; 
}); 
}); 
+0

Мне нравится, как этот ответ по-прежнему содержит эту проверку здравомыслия. Действительно, бесполезно добавлять что-то к чему-то, если 1 больше не равно 1. – raina77ow

0

как уже упоминалось в комментариях, браузер пытается отправить форму, которая принимает вас на новый адрес, который не то, что вы хотите. Либо используйте обычную старую кнопку вместо того, чтобы запустить вашу функцию, либо предотвратить поведение отправки по умолчанию, вернув false в последнюю строку вашего обработчика.

+1

Это не ** попытка ** отправить форму, она преуспевает. –

+0

Я имею в виду, что отправить: отправить данные на сервер, который затем обрабатывается там, что, похоже, не является тем, что вы хотите сделать. – Hoff