Одна функция JavaScript работает, а две нет? - PullRequest
1 голос
/ 14 декабря 2011

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

<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 %>

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

<script>
</script>

, следовательно, имея 2 секции script / script, каждая из которых содержит одну функцию, функция 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;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

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

0 голосов
/ 14 декабря 2011

В поле ввода введите форму. Вам нужно изменить это:

<div class="actions">
 <input type="button" value="Apply" onclick="applyConfigs();">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...