Подтвердить что ты не робот

Javascript - confirm() внутри функции jquery.click()

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

$("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');
    }
  }
});

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

4b9b3361

Ответ 1

У вас есть несколько вопросов. Первая проблема заключается в том, что вы определяете переменную с именем 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');
    }
  }
});

Ответ 2

if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }

Ответ 3

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

Измените имя 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/

Ответ 4

Когда вы объявляете переменную в любой точке своей функции, она автоматически получает "вытаскивание" вверху в качестве локальной переменной. Когда вы вызываете подтверждение как функцию, он сначала обнаруживает локальную переменную (которая еще не определена) и не поднимается до цепочки областей до 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

попробуйте

if (confirm) {
      alert('true');
    } else {
      alert('false');
    }

Ответ 6

Моя первоначальная, хотя ваша главная проблема лежит здесь

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

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

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

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

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

if (confirm("dialog"))

Ответ 7

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

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

    return confirm("Are you sure?");

});