Состоящая из кнопок блоки сценария с формой представить? - PullRequest
0 голосов
/ 27 марта 2012

Я использую кнопку начальной загрузки Twitter JS , часть кнопки Stateful.

Все работает как положено, но иногда при нажатии кнопки - «блокирует» событие отправки формы.Тогда форма не отправляется и кнопка не изменяется обратно на включенную.

По сути, в конце я получаю не отправленную форму и отключенную кнопку.

Что не так?

Разметка - здесь ничего особенного, просто какая-то разметка калитки:

<button class="btn btn-primary" wicket:id="submit" type="submit">
    <i class="icon-white icon-ok"></i>&nbsp;<wicket:message key="label"/>
</button>

И класс кнопки.Просто добавьте атрибуты, необходимые для работы JS, и выполните скрипт при загрузке страницы:

public class StatefullButton extends Button {

    public StatefullButton(String id, IModel<String> loadingText) {
        super(id);
        setOutputMarkupId(true);
        add(AttributeModifier.append("data-loading-text", loadingText));
    }

    @Override
    public void renderHead(IHeaderResponse response) {
        response.renderJavaScriptReference(BootstrapButtonPluginResourceReference.get());
        response.renderOnDomReadyJavaScript("$('#" + this.getMarkupId() + "').button();");
        response.renderOnDomReadyJavaScript("$('#" + this.getMarkupId() + "').click(" +
            "function(){" +
                "var btn = $(this) \n" +
                "btn.button('loading')" +
            "})");
    }
}

1 Ответ

0 голосов
/ 20 апреля 2012

Я не смог решить проблему с помощью кнопки, но нашел обходной путь, используя SubmitLink и переопределив getTriggerJavaScript вот так.

@Override
protected String getTriggerJavaScript(){
    String script = super.getTriggerJavaScript();
    String loadingScript = "$(this).button('loading');";
    return loadingScript + script;
}
...