Отключить кнопку отправки изображения в PrimeFaces p: datatable - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть DataTable с CommandButton, который действует следующим образом:

<h:commandButton action="#{communicator.requestFavoriteDetails}"
onclick="disableSubmit(this.id);"
update="@navi:tableFavorites">
<f:setPropertyActionListener value="#{book}"
target="#{favorites.selectedFavorite}" />
<f:ajax />  
</h:commandButton>

(я только что удалил некоторые теги ...)

Эта кнопка работает нормально.Но на некоторых (мобильных) устройствах запрос отправляется дважды по клику.Я не знаю почему .. Я попробовал все, но ничего не помогло, чтобы предотвратить это.(например)

Этот код отображается в теге: и я знаю, что это нельзя отключить.

Я хочу добавить таймер.Когда пользователь нажимает на эту кнопку, событие «onclick» должно быть заменено пустой функцией, а через 2 .. секунды оно должно быть восстановлено.Таким образом, я могу предотвратить отправку запроса дважды.

Функция disableSubmit (id) действует следующим образом:

function disableSubmit(id) {
    var new_func = "function() { return false }";
    if ( typeof(document.getElementById(id)) == "object" && typeof(document.getElementById(id).onclick) == "function") {
        if ($("#" + escapeJSFid(id)).attr('onclick') != new_func) {
        var old_func = $("#" + escapeJSFid(id)).attr("onclick");
        $("#" + escapeJSFid(id)).attr('onclick','"+new_func+"').delay(2000).attr('onclick','"+old_func+"');
        }
    }
}

Но этот код не работает.FF не возвращает никаких ошибок .. Ох .. и escapeJSFid - это простая функция:

function(id){ id.replace(/:/g,"\\:"); }

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

С уважением

1 Ответ

0 голосов
/ 02 апреля 2011

Похоже, я решил свою проблему:

function disableSubmit(id) {
    $("#" + escapeJSFid(id)).click( function() {
            // alert ("DISABLED");
        return false;
    });
}

Onclick: будет выполнена функция disableSubmit (id).Функция onClick будет удалена.Но, я полагаю, база данных PrimeFaces хранит информацию о кнопках и т. Д. В бине (где-то).Кнопки восстанавливаются автоматически со своими старыми значениями и событиями (onclick).Когда я дважды щелкаю по своей кнопке, я вижу сообщение об отключении.Но когда я нажимаю на кнопку, подождите 2-3 секунды и затем нажмите еще раз на кнопку, сообщение не появляется.Нормальная функция выполняется.Поэтому, я думаю, моя кнопка восстанавливается автоматически после завершения события "action = ''".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...