Javascript - подтверждение () внутри функции jquery .click () - PullRequest
15 голосов
/ 11 ноября 2011

У меня есть следующее

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
   confirm('Dialogue');
  }
});

Но я бы хотел использовать функцию подтверждения. Я уже попробовал

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

Но окно подтверждения не генерируется. Как мне это сделать?

Ответы [ 7 ]

22 голосов
/ 11 ноября 2011

У вас есть несколько вопросов.Первая проблема - вы определяете переменную с именем confirm.Нехорошо!Переименуйте его в isGood или что-то еще.

Другая ошибка здесь:

if (confirm=true) {

confirm=true - это назначение, а не сравнение.

Это должно быть

if (confirm==true) {

или просто

if (confirm) {

Так что ваш код будет выглядеть примерно так:

var bar = "bar";
$("button").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var isGood=confirm('Dialogue');
    if (isGood) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
12 голосов
/ 15 июля 2013
if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }
5 голосов
/ 11 ноября 2011

Когда вы объявляете переменную в любом месте вашей функции, она автоматически «вытягивается» наверх как локальная переменная. Когда вы вызываете подтверждение как функцию, оно сначала находит локальную переменную (которая еще не была определена) и не поднимается вверх по цепочке областей действия до window, где находится функция.

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

совпадает с

$("element").click(function() {
  var foo=bar, confirm = undefined;
  if ( foo == "bar" ) {
  confirm=confirm('Dialogue');
  ...
});

Вы могли бы 1) переименовать вашу переменную, 2) вызвать window.confirm("Dialog"), сказав, что вы хотите использовать глобальную функцию вместо локальной переменной, или 3) просто поместить вызов подтверждения внутри if

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    if (confirm('Dialogue')) {
      alert('true');
    } else {
      alert('false');
    }
  }
});
5 голосов
/ 11 ноября 2011

Все комментарии о сравнении верны, однако причина, по которой диалоговое окно подтверждения не отображается, заключается в том, что вы стираете объект подтверждения.

Изменить имя confirm var.

$(element).click(function() {
  var confirm1 = confirm('Dialogue');
  if (confirm1) {
    alert('true');
  } else {
    alert('false');
  }  
});

http://jsfiddle.net/xjGZj/

Сравните это с тем, который не работает.

$(element).click(function() {
  var confirm = confirm('Dialogue');
  if (confirm) {
    alert('true');
  } else {
    alert('false');
  }
});

http://jsfiddle.net/xjGZj/1/

1 голос
/ 11 ноября 2011

попробуй

if (confirm) {
      alert('true');
    } else {
      alert('false');
    }
0 голосов
/ 29 апреля 2017

Добавьте .confirm класс к элементу, затем в jQuery напишите ..

$('.confirm').click(function() {

    return confirm("Are you sure?");

});
0 голосов
/ 11 ноября 2011

Мой начальный вопрос - ваша главная проблема?

var foo=bar;
  if ( foo == "bar" ) {

Что такое бар?Я полагаю, что вы намеревались выполнить следующее присваивание var foo="bar";, которое сделало бы оператор if оценочным как истинное и выполнило бы ваше диалоговое окно подтверждения.

Кроме того, следующее неточное

var confirm = confirm("dialog");
if (confirm=true)

просто используйтеэто:

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