отключение гиперссылки в displayTag - PullRequest
0 голосов
/ 28 мая 2019

Я использую декоратор таблицы displayTag для отображения моей страницы JSP.

На странице есть таблица с колонками. Одним из столбцов является действие, в котором отображаются 2 гиперссылки. Один - это оплата, а другой - близко. Каждая строка будет иметь действие 5 столбцов, являющееся последним столбцом с гиперссылками.

Это код отображения действия в JSP

<display-el:column property="action" sortable="false" title=" "
                            class="defaultTextCentered" style="width:6%" sortName="action" />

Ниже код моего декоратора

public String getAction() {
renderPayLink();
}

private void renderPayLink() {

            decoratedVal.append("<a href=\"javascript:newPopup('");
            decoratedVal.append(getContextPath());
            decoratedVal.append("/abc/taxPaymentInternal.html?iSeqNo=");
            decoratedVal.append(abc.getISeqNumber());
            decoratedVal.append("&iPeriod=");
            decoratedVal.append(abc.getIDate());
            decoratedVal.append("', 800, 700)\" title=\"Pay\">Pay</a>");
            decoratedVal.append("&nbsp;&nbsp;");

    }

Таким образом, ссылка при нажатии откроет всплывающее окно, и пользователь сможет ввести информацию о паре и отправить. Пока это всплывающее окно открыто, я все равно могу зайти в основной браузер и снова щелкнуть на платной плате, которая обновляет всплывающее окно и заставляет меня повторно отправлять информацию. Я должен остановить это, отключив кнопку оплаты, как только я нажму в браузере, а затем открою всплывающее окно. Как мне этого добиться?

Заменена оплата на

  decoratedVal.append("', 800, 700)\" title=\"Pay\" ");
            decoratedVal.append("onclick=\"this.setAttribute(");
            decoratedVal.append("\'style\', \'pointer-events:none; cursor:default;\'); this.setAttribute("); 
            decoratedVal.append("\'href\', \'\')\">Pay</a>");
            decoratedVal.append("&nbsp;&nbsp;");

Получение ошибки «Не удалось получить свойство setAttribute с неопределенной или нулевой ссылкой» из отладки f12.

   <a title="Pay" onclick="this.setAttribute('style', 'pointer-events:none; cursor:default;'); this.setAttribute('href', '')" href="javascript:newPopup('/mei/invoicing/launchConfirmPaymentInternal.html?invoiceSeqNo=131946&amp;invoicePeriod=02-11-2017', 800, 700)">Pay</a>

1 Ответ

1 голос
/ 29 мая 2019

Один из способов - отключить тег <a> при нажатии на него.

Простое решение:

Вы можете заменить эту строку:

decoratedVal.append("', 800, 700)\" title=\"Pay\">Pay</a>");

с такими:

decoratedVal.append("', 800, 700)\" title=\"Pay\")
decoratedVal.append("onclick=\"this.setAttribute(")
decoratedVal.append("\'style\', \'pointer-events:none; cursor:default;\'); this.setAttribute(");
decoratedVal.append("\'href\', \'\')\">Pay</a>");

Обратите внимание, что ссылка будет снова доступна при обновлении страницы.Если вам нужен другой способ его активации, вам нужно будет сделать это вручную.

Более элегантное решение:

Если у вас есть таблица стилей, например файл CSS, вы можете создать этот класс там.:

.disabledLink{
    pointer-events: none;
    cursor: default;
}

А в случае onclick вашего тега ссылки замените setAttribute на addClass('disabledLink').Это также облегчает удаление, с removeClass('disabledLink')

...