Как запустить условную функцию jquery? - PullRequest
0 голосов
/ 29 марта 2012

Для следующего кода

<script type="text/javascript">
$(document).ready(function(){
$("#erase").click(function(){
    confirm('Are you sure you want to erase it?');
    var data = {
         "post": 123,
     };
    $("#wrapper").load("<?php echo $url; ?>", data)
});
});
</script>

Приведенный выше код возвращает окно подтверждения с двумя вариантами Ok и Cancel, когда пользователь нажимает на ссылку стирания. Но независимо от того, что они выбирают (Ok или Cancel), вызывается функция load (). Как я могу предотвратить функцию загрузки, если пользователь отказывается от действия?

Ответы [ 5 ]

3 голосов
/ 29 марта 2012

Вы никогда не проверяете подтверждение.Вам нужно сохранить значение вызова confirm(), а затем, конечно, проверить его:

var proceed = confirm('...');
if (proceed){
  // continue on
}

Сокращенный код, описанный выше, сначала избегает назначения (что также вполне приемлемо):

if (confirm('...')){
  // proceed
}

На MDN есть отличная статья о window.confirm с примером использования.

1 голос
/ 29 марта 2012

, если вы хотите запустить эту функцию, только если пользователь нажимает «ОК», вот код для этого

$("#erase").click(function(){
   if(confirm('Are you sure you want to erase it?')){

   var data = {
     "post": 123,
    };
   $("#wrapper").load("<?php echo $url; ?>", data)
  }


});
0 голосов
/ 29 марта 2012

Сделал быструю скрипку, чтобы помочь вам.http://jsfiddle.net/yPkuZ/

Вам необходимо сохранить ответ и действие для его результатов

$(document).ready(function() {
    $("#erase").click(function() {
        reply = confirm('Are you sure you want to erase it?');
        if (reply) {
            var data = {
                "post": 123,
        };
        $("#wrapper").load("<?php echo $url; ?>", data)
    } else {
        alert('do nothing');
    }
});

});

0 голосов
/ 29 марта 2012

Предполагается, что JS-функция «подтверждения» возвращает логическое значение независимо от того, выбрал пользователь «ОК» или «Отмена».просто замените

confirm('Are you sure you want to erase it?')

на

if( !confirm('Are you sure you want to erase it?') )
     return;

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

0 голосов
/ 29 марта 2012

confirm() возвращает true, если они нажали Ok, или false, если они нажали Cancel. Проверьте значение, прежде чем продолжить.

    if (confirm('Are you sure you want to erase it?'))
    {
      var data = {
         "post": 123,
       };
      $("#wrapper").load("<?php echo $url; ?>", data)
    }
...