1

問題を解決する方法がわからないため、初めて助けを求めています。qtipに表示するフォームを作りました。このフォームには jQuery 検証があり、検証エラーが表示されたときに独自の qtips があります。

$(document).ready(function() {

var qtipForm = $('#RegisterAccount').clone();
qtipForm.attr('name', 'RegisterForm');

$('#addinstallerloginform').qtip({
    content: {
        text: qtipForm,
        title: {
            text: 'Zakładanie konta',
            button: true
        }
    },
    hide: false,
    show: {
        event: 'click'
    },
    position: {
        my: 'left top',
        at: 'right top'
    },
    events: {
        render: function (event, api) {
            $('form', this).submit(function (e) {
                $.ajax({
                    type: 'post',
                    data: {
                        "id": 2
                    },
                    dataType: 'json',
                    url: 'index.php?controller=Replacement&action=addloginform',
                    success: function (data) {
                        if (data.state == 'new') {
                            $('#addinstallerloginform').after(sendMail(data.login, data.password));
                        }
                        if (data.state == 'has') {
                            alert('Instalator ma już wygenerowane dane do logowania. Jego login to: ' + data.login);
                        }
                    }
                });

                e.preventDefault();
            });
        },
        show: function (event, api) {
            var myForm = $('form[name=RegisterForm]');
            myForm.validate({
                onsubmit: true,
                onkeyup: false,
                errorClass: 'error',
                validClass: 'valid',
                rules: {
                    email: {
                        required: true,
                        email: true
                    }
                },
                errorPlacement: function (error, element) {
                    console.log(error);
                    var elem = $(element),
                        corners = ['right center', 'left center'],
                        flipIt = elem.parents('span.right').length > 0;
                    if (!error.is(':empty')) {
                        elem.filter(':not(.valid)').qtip({
                            overwrite: false,
                            content: error,
                            position: {
                                my: corners[flipIt ? 0 : 1],
                                at: corners[flipIt ? 1 : 0],
                                viewport: $(window)
                            },
                            show: {
                                event: false,
                                ready: true
                            },
                            hide: false,
                            style: {
                                classes: 'qtip-red qtip-higher-zindex'
                            }
                        })
                            .qtip('option', 'content.text', error);
                    } else {
                        elem.qtip('destroy');
                    }
                },
                success: $.noop,
            })
        }
    }
});});

http://jsfiddle.net/qmqqa/ - これがどのように機能するかです。

  1. メイン フォームを含むメイン qtip を閉じた後にエラー検証 qtip を破棄する方法。
  2. 検証エラーがない場合にのみ 'index.php?controller=Replacement&action=addloginform' を POST する方法 - 今では毎回実行されます

手伝ってくれてありがとう

4

1 に答える 1

0

1.メインqTipを閉じている間にエラー検証を破棄するには、この内部イベントオブジェクトを使用できます

    hide: function(event, api) {
      $('.qtip-red').qtip('hide');
    },
于 2013-06-14T18:00:35.020 に答える