отправьте форму с помощью mooTools, и вызовите встроенные формы при отправке события ... help - PullRequest
0 голосов
/ 19 марта 2011

Я пишу класс, который заменяет все input type="button" и input type="submit" в документе пользовательской кнопкой, которая на самом деле является диапазоном, вставленным в тег привязки, у меня все написано, и все работает, кроме встроенное onsubmit событие не вызывается, когда форма отправляется с использованием JavaScript.

На самом деле, даже написание статического тега привязки

<a href="javascript:void(0)" onclick="document.FORMNAME.submit();">Submit</a>

не будет запускать встроенное onsubmit событие для формы, но <input type="submit" /> будет запускать событие ... в любом случае должен быть способ вызвать это событие onsubmit с помощью javascript.

Вот фрагмент того, с чем я работаю:

click: function() {

    //get parent form
    var thisForm = this.getParent('form');

    //fire onsubmit event
    thisForm.fireEvent('submit'); //this doesnt work!

    //submit form...the event isn't fired here either!
    thisForm.submit();

}

у кого-нибудь есть идеи? этот класс не нуждается в настройке, и есть некоторые старые сайты, использующие нашу систему cms, к которым мы хотим подключить это, и есть довольно много встроенных событий отправки в формах, которые мы должны учитывать для

Спасибо

UPDATE

Я принял предложение и придумал следующее:

if(this.getParent().onsubmit()) {
    this.getParent().submit();
}

отлично работает для оценки события onsubmit формы и отправки формы на основе ее вывода, но что, если функция вообще не существует? Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 марта 2011

Увольнение submit в форме не вызывает ее встраивание onSubmit, это поведение javascript по умолчанию (найдено так: http://www.codestore.net/store.nsf/unid/DOMM-4QS3RL/)

Вы можете попробовать вызвать onsubmit самостоятельно, хотя это работаетдля меня:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools-yui-compressed.js"></script>
        <script type="text/javascript" charset="utf-8">
            window.addEvent('domready', function(e) {
               $$('span.submit').each(function(el) {
                  el.addEvent('click', function(e) {
                    this.getParent().onsubmit();
                  });
               });
            });
        </script>
    </head>
    <body>
        <form method="post" onsubmit="alert('hi');" class="form">
            <input type="text" value="test" />
            <span class="submit">Submit the form</span>
        </form>
    </body>
</html>
0 голосов
/ 21 августа 2013

Возможно, вы захотите попробовать этот код вместо этого, поскольку он проверит, было ли событие onsubmit присоединено как прослушиватель событий, а не как жестко закодированный атрибут.Если событие было присоединено как слушатель, часть [form element] .onsubmit () не будет работать.

    function myOnSubmit(formId){
        var f = document.getElementById(formId);
        if(document.createEvent){
            var e = document.createEvent('Event');
            e.initEvent('submit',true,false);
            f.dispatchEvent(e);
        } elseif(document.createEventObject){
            var e = document.createEventObject('Event');
            e.button = 1;
            f.fireEvent('onsubmit',e);
        } elseif(typeof(f.onsubmit) == 'function'){
            f.onsubmit();
        }
    }
...