Как предотвратить двойное нажатие кнопки «Отправить» - PullRequest
7 голосов
/ 01 декабря 2011

Я пытаюсь запретить пользователям системы не нажимать кнопку «Отправить» дважды в Oracle ApEx, но я не уверен, как нацелить следующий код с помощью jQuery, то есть:

<a href="javascript:doSubmit('MY_SUBMIT')">
<img border="0" id="MS_BTN" alt="Submit Request" src="submit_btn.gif">
</a>

Я в основномхочу убедиться, что вся необходимая проверка формы прошла, и когда пользователь нажимает кнопку «Отправить», я хотел бы как-то скрыть кнопку сразу после ее нажатия.

Я пробовал следующий код какЯ не могу использовать значение src, например:

$("a:contains('MY_SUBMIT')").hide();

Но это не сработало.

Может кто-нибудь помочь мне, как добавить эту кнопку в событие onclick и, по сути, скрыть эту кнопкуот пользователя на успешный начальный клик?

Спасибо.

Ответы [ 4 ]

7 голосов
/ 01 декабря 2011

Вот пример того, как это сделать с помощью jQuery:

HTML:

<a id="mySubmit" href="#">
<img border="0" alt="Submit Request" src="submit_btn.gif">
</a>

Код (запуск после загрузки документа):

$("#mySubmit").click(function(event) {
    $(this).hide();
    // do other stuff here
    return(false);
});

И,рабочий пример: http://jsfiddle.net/jfriend00/CtpLU/

Или вы можете сделать это только с изображением и без тега <a>, например:

<img id="mySubmit" border="0" alt="Submit Request" src="submit_btn.gif">

$("#mySubmit").click(function(event) {
    $(this).hide();
    // do other stuff here
    return(false);
});

Другие возможные решения, помимо сокрытия кнопки:

  1. Чтобы установить флаг, который вы уже отправили, и не делать это второй раз.
  2. Запишите время последней отправки и не разрешайте две отправки в некоторыхпромежуток времени (например, в течение 5 минут).
  3. Отсоедините обработчик событий, поэтому нажатие кнопки отправки больше ничего не делает.
  4. Код сервера, чтобы игнорировать две отправки от одного клиента в течение некоторого временипериод.
3 голосов
/ 01 декабря 2011

Возможно установить глобальную переменную, которая изменяется при первом нажатии на ссылку

var clicked = false;

function doSubmit(){
  if(clicked) return;
  clicked = true;

  // all of your code //

  clicked = false;
}
1 голос
/ 01 декабря 2011

Укажите некоторый идентификатор для тега привязки, после чего вы можете использовать следующий код

$('#anchorTagId').unbind('click.submit').bind('click.submit', function (){
  $(this).unbind('click.submit');
  $(this).hide();
  doSubmit('MY_SUBMIT');
});

Надеюсь, это поможет.

Спасибо.

0 голосов
/ 01 декабря 2011

Лучше всего было бы добавить идентификатор к элементу <a>, в противном случае нацелиться на родительский объект изображения каким-либо образом:

$("img[src='submit_btn.gif']").click(function() {
    $(this).parent().hide();
});

Теоретически любой объект может быть целевой, даже атрибут "alt".1005 *

...