Кнопка не перенаправляет на ссылку, если я сделаю один клик - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть кнопка в форме, которая перенаправляет страницу в другой веб, как только данные проверены.Href кнопки имеет информацию, только если эти данные проверены, в противном случае она будет нулевой.

Проблема в том, что, даже если все работает нормально, для перенаправления пользователя на страницу, два щелчканеобходимы для кнопки, и я не знаю, почему.

Я передаю формат HTML-формы, функцию, которая проверяет данные, а затем часть, где данные захватываются и Href кнопкизаполнены.Все это в очень краткой форме с соответствующими вещами.

ФОРМА HTML:

    <form id="formTarjeta" class="formPayu" onsubmit="return registroCompraTarjeta()">

        <p><strong>Dirección de envío</strong></p>

        <div class="form-group">

            <div class="input-group">

                <span class="input-group-addon">

                    <i class="glyphicon glyphicon-home"></i>

                </span>

                <input type="text" class="form-control" id="registroDireccionTarjeta" name="registroDireccionTarjeta" placeholder="BUSQUE y SELECCIONE su dirección" required>

            </div>

        </div>

        <div class="clearfix"></div>

    <a class="btn btn-block btn-lg btn-default backColor btnPayu" id="load" data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> PROCESANDO">CONFIRMAR DATOS</a>

</form>

ФУНКЦИЯ ПРОВЕРКИ В JS

function registroCompraTarjeta(){

    var direccionTarjeta = $("#registroDireccionTarjeta").val();

    if(direccionTarjeta == ""){ 

        swal('WARNING', 'warning');

        return false; }

  return true;

}

КНОПКА ЗАПИСИ ДАННЫХ И ИЗМЕНЕНИЯ HREF

$("#formTarjeta").on('click','.btnPayu',function(e){

    if (registroCompraTarjeta() == true) {

         //CAPTURE DATA FORM AND CREATE AN ARRAY TO SEND BY AJAX

        if(...){

            $.ajax({

                url:"ajax/cart.ajax.php",
                method:"POST",
                data: array,
                cache: false,
                contentType: false,
                processData: false,
                success:function(response){

                    $('.btnPayu').attr('href', response);
                    $('.btnPayu').on('click', function() {
                        var $this = $(this);
                        $this.button('loading');
                        setTimeout(function() {
                           $this.button('reset');
                       }, 4000);
                    });

                }

            })

        } else {
                ... 
        }

    }

1 Ответ

0 голосов
/ 28 февраля 2019

Проблема в том, что запрос AJAX выполняется асинхронно.Он не изменяет href до тех пор, пока событие щелчка не будет полностью обработано, поэтому он не может влиять на то, как обрабатывается этот щелчок.

Вместо изменения href присвойте window.locationдля перенаправления на новую страницу.

$.ajax({

  url: "ajax/cart.ajax.php",
  method: "POST",
  data: array,
  cache: false,
  contentType: false,
  processData: false,
  success: function(response) {
    window.location = response;
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...