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');
}
}
});
Но окно подтверждения не создается. Как я могу это сделать?
Ответы
Ответ 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?");
});