2011-12-14 3 views
1

У меня есть большой Ruby On Rails форму, которая имеет следующий вид частичной структуры (файл _form.html.erb)Выполняется одна функция JavaScript, но два нет?

<script language="javascript" type="text/javascript"> 

    function myFunction1() { 

     ... some js code here 

    } 

    function applyConfigs() { 

     ... some js code here 

    } 

</script> 

<%= form_for(@test, :html => {:name => "Test", :id => "test_form"}) do |f| %> 

    ... some Ruby code here 

    <div class="actions"> 
     <input type=button value="Run Function1" onclick="myFunction1();"> 
    </div> 

    ... some Ruby code here 

    <div class="actions"> 
     <input type=submit value="Apply" onclick="applyConfigs();"> 
    </div> 

<% end %> 

В этой ситуации ни одна из функций не вызывается при нажатии кнопки «Выполнить» или FUNCTION1 Кнопки «Применить» (кнопки выделяют, но ничего не делают). Но если я ставлю каждую функцию в отдельном

<script> 
</script> 

поэтому имеющий 2 секции скрипт/сценарий, содержащий одну функцию каждого, то функция myFunction1() запускается на выполнение правильно, но applyConfigs() еще не (форма отправлена, но applyConfigs() функция не выполняется). В любом случае сообщений об ошибках нет, только функции не выполняются.

Любая идея, что здесь происходит?

Моя функция applyConfigs() довольно большой, но вот моя другая функция, которую я назвал myFunction1()

function showHideDiv(elementId,buttonId) { 
    if (document.getElementById) { 
     var element = document.getElementById(elementId); 
     var button = document.getElementById(buttonId); 
     if (element.style.display == 'none') { 
      element.style.display = 'block'; 
      button.value = "Hide Options"; 
      return false; 
     } else if (element.style.display == 'block') { 
      element.style.display = 'none'; 
      button.value = "Show Options"; 
      return false; 
     } 
    } 
} 
+0

Первое, что я вижу, это то, что у вас есть двоеточие; после вызова функции. Попробуйте удалить их. –

+0

И, возможно, дайте нам свой код JavaScript, это может быть очень полезно. – talnicolas

+0

Точки с запятой действительны (вы можете иметь несколько операторов в четном обработчике) – colithium

ответ

0

Тип входного представить представлю форму. Его необходимо изменить:

<div class="actions"> 
<input type="button" value="Apply" onclick="applyConfigs();"> 
</div> 
+0

Я пробовал это изменение, но до сих пор не повезло ;-( – rh4games

0

Собственное имя onClick с капиталом C, но это не имеет значения. Предполагая, что ваш javascript без ошибок ... Попробуйте использовать событие onSubmit для кнопки Apply. Я думаю, это то, что вы хотите. onSubmit даже позволяет условно отменить отправку формы.

+0

Я изменил на onClick, а также onSubmit, но по-прежнему та же проблема ;-( – rh4games

Смежные вопросы