2012-12-06 3 views
-1

Я уверен, что я буду ненавидеть себя, когда узнаю, в чем проблема, но я не могу для жизни понять, почему это не сработает. Я использую setTimeout в другом месте на сайте так же, как это, и он работает нормально.window.setTimeout Not Firing

<input type='button' value='Submit Form' onclick='ValidateForm()'/> 
var submitFinalTimeout; 
function ValidateForm() { 
     //Performing a number of validations which may return false; 

     //I know that the following if condition evaluates as true. But just for giggles I tried moving it outside of the if and it still never fires. 
     if (types.indexOf("K2") != -1) { 
      submitFinalTimeout = window.setTimeout(function() { alert("Timeout set"); }, 2000); 
      validateK2(); 
      return true; 
     } 

     return true; 
    } 

Когда я говорю проверить, я имею в виду я предупреждая использование, если проблема найдена и возвращает ложь, чтобы не допустить проверки от продолжения. Возвращаемые значения true или false не влияют на то, являются ли сообщения страниц.

Я попытался также удалить все остальное внутри фигурных скобок, чтобы гарантировать, что никакой другой код не противоречит ему. Я буквально пытался удалить ВСЕ другой код с помощью функции ValidateForm, кроме setTimeout, и он все равно никогда не срабатывает.

Я видел аналогичный пост, где проблема была связана с другой ошибкой javascript на странице, препятствующей ее работе. Но ни моя консоль разработчика в Chrome, ни firebug не показывает никаких ошибок или каких-либо данных на странице. Несколько предупреждений об интерпретации изображения.

+1

Как 'ValidateForm' называется? – epascarello

+1

Вы создали журнал, чтобы проверить, что 'ValidateForm()' is * на самом деле * вызывается? – ahren

+0

Кнопка onclick. – jmease

ответ

2

Я буду предполагать, что при отправке формы вызывается ValidateForm. Причина, по которой вы не видите функцию, вызванную setTimeout, состоит в том, что страница полностью срывается путем отправки формы, а затем заменяется результатом.

+0

Я согласен, надеялся увидеть код кнопки перед отправкой. :) – epascarello

+0

Функция ValidateForm срабатывает в результате нажатия кнопки. Это html-вход и не публикует страницу. Это никоим образом не связано с формой «отправки» – jmease

+0

@jmease: Хорошо. (Я откровенно не верю в это, так как если бы это было так, функция ** была бы вызвана через две секунды, но это нормально.) Если вы дадите нам больше контекста, возможно, мы сможем вам помочь. –

0

Я хочу повторить другие комментаторы: вы уверены, что функция вызывается и что условное оценивается как true?

i setup a JS Fiddle example. (! Types.indexOf ("К2") = -1) все, кажется, хорошо, если предположить, что ValidateForm() на самом деле называется и верно:

 if (true || types.indexOf("K2") != -1) { 
      submitFinalTimeout = window.setTimeout(function() { alert("Timeout set"); }, 2000); 
     } 
.... 

     //call the function 
     ValidateForm();