ajaxSubmitButton confirm в красивом окне ?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
ninzzo
Сообщения: 348
Зарегистрирован: 2014.04.25, 07:29

ajaxSubmitButton confirm в красивом окне ?

Сообщение ninzzo »

Код: Выделить всё

<?php 
echo CHtml::form(); 
 
echo CHtml::hiddenField('input', $one->id);
echo CHtml::ajaxSubmitButton('Купить', '/sklad/UpdateAjax1', array(
    'type' => 'POST',  
    'success'=>'function(){ ...  }',
),
array('confirm'=>'Вы уверены ?', 'id'=>'filterSubmit', 'class'=>'btn')
); 
echo CHtml::endForm();
?>
как сделать что бы вместо стандартного окна "вы уверены?" вылазило какое то красивое модальное окно?
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение Alex@ »

С помощью jQuery оформи окно.
Jadson
Сообщения: 17
Зарегистрирован: 2014.07.26, 09:25

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение Jadson »

http://bootboxjs.com/
В YiiBooster уже есть его интеграция, но думаю ради окна ставить бустер не стоит
Аватара пользователя
ninzzo
Сообщения: 348
Зарегистрирован: 2014.04.25, 07:29

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение ninzzo »

Оформить это не проблема, когда есть оно.

ЧТо тут писать что бы вылазило модальное и т.д. ?

Код: Выделить всё

array('confirm'=>'Вы уверены ?', 

его же надо на что то заменить
Аватара пользователя
ninzzo
Сообщения: 348
Зарегистрирован: 2014.04.25, 07:29

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение ninzzo »

разобрался.
скачал бибилотеку bootbox.js

Снизу шаблона прописал:

Код: Выделить всё

function confirm(){
bootbox.confirm("Вы уверены?"); 
}  
теперь при клике "купить" вместо некрасивого окна вылазит красивое. Но я не могу разобраться как сделать что бы оно принимало ответ ДА\НЕТ.

Если так:

Код: Выделить всё

function confirm(){
bootbox.confirm("Вы уверены?"); 
return true;
}  
то оно сразу думает что я нажал "ДА"
аналогично с ретурн false.

Помогите написать условие типа:

Код: Выделить всё

function confirm(){

if (bootbox.confirm("Вы уверены?")) {
        return true;
    } else {
        return false;
    }

}  
Но так тоже не работает =(
Аватара пользователя
ninzzo
Сообщения: 348
Зарегистрирован: 2014.04.25, 07:29

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение ninzzo »

4 часа перерыл гугл и все перепробовал. Нигде нет рабочих вариантов =\

Код: Выделить всё

function confirm(e){

e.preventDefault();

if (bootbox.confirm("Вы уверены?")) {
        return true;
    } else {
        return false;
    }

}  
почему не срабатывает?! preventdefault?

пробовал через beforSEND, вешал на onclick и т.д. Десятки вариантов. Не катит.
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение Alex@ »

А если на bootstrap сделать?
http://beta.bootstrap-ru.com/303/javasc ... s-examples
Аватара пользователя
ninzzo
Сообщения: 348
Зарегистрирован: 2014.04.25, 07:29

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение ninzzo »

Код: Выделить всё

А если на bootstrap сделать? 
Как ты оформишь javascript confirm своими стилями? )
Выше написал к чему пришел.
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение Alex@ »

Как ты оформишь javascript confirm своими стилями? )
Выше написал к чему пришел.
Ты почитай повнимательней.... (с начала статьи)
всё можно сделать, так как тебе надо...
Аватара пользователя
ninzzo
Сообщения: 348
Зарегистрирован: 2014.04.25, 07:29

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение ninzzo »

Вообщем зря 5 часов потратил на поиски. В итоге сделал по обычному костылю:

Код: Выделить всё

//добавил эту кнопку
echo '<a href="" class="btn" onclick="conf(); return false">Купить</a>';

//скрыл кнопку ajaxsubmit
<style>
.btn11{display:none;}
</style>



//форма отправки
....

echo CHtml::ajaxSubmitButton('Купить', '/sklad/UpdateAjax1', array(
    'type' => 'POST',  
     'success'=>'function(resp){
                               bootbox.alert(resp);
                        }',
                        'error'=>'function(){
                                alert("Ошибка");
                        }',),
array( 
'id'=>'filterSubmit', 'class'=>'btn11')
); 
...


//при клике на кнопку спрашивает или уверен. Если жмем ОК (уже красивом окне) то происходит клик по ajaxsubmity
<script>
function conf(){
    bootbox.confirm("Вы уверены?", function(result) {
  if(result == true){$('#filterSubmit').click();}
});
}
</script>


Аватара пользователя
Barssoft
Сообщения: 726
Зарегистрирован: 2013.01.21, 16:03

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение Barssoft »

подход был изначально не правильный, нужно было функцию confirm писать как вызов модального окна, на котором 2 конопки, на каждой свой сценарий, и коллбеки весят в зависимости от того куда нажал человек!
ilyas.galiev
Сообщения: 39
Зарегистрирован: 2014.08.18, 10:04

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение ilyas.galiev »

Вместо такой порнографии проще было бы сделать кнопку

Код: Выделить всё

<a href="#" class="btn btn-buy">Купить</a>
И на jquery сделать ajax запрос

Код: Выделить всё

$('.btn-buy').on('click', function(event){
event.preventDefault();
$.ajax ({
type: "POST",
url: "/sklad/UpdateAjax1",
data: {data: JSON.stringify($("#form").serialize())},
beforeSend: function() { bootbox.confirm('Вы уверены?',function(result){ if(result != false) return false; },
success: function(resp){bootbox.alert(resp)},
error: function(){bootbox.alert('Ошибка)}
})
});
Veysman
Сообщения: 50
Зарегистрирован: 2015.01.11, 17:07

Re: ajaxSubmitButton confirm в красивом окне ?

Сообщение Veysman »

Я бы сделал вручную:

Код: Выделить всё

<button id="cofirmTarget">Купить</button>

Код: Выделить всё

$('body').on('click', '#confirmTarget', function(){
 
            if(confirm('Вы уверены ?')){

                $.ajax({
                    type: "POST",
                    url: "<?=Yii::app()->createUrl("/sklad/UpdateAjax1")?>",
                    dataType:'html',
                    data: ... ,
                    success: function(msg){
                        ...
                    }
                });

            }
        });

Вот ручная реализация того что есть в Yii.

Код: Выделить всё

$('body').on('click', '#confirmTarget', function(){
...     
});
А вот тут можете свою реализацию модального окна сделать.

P.S. Я бы именно так советовал делать. В Yii есть определенные проблемы с генерированием уникальных ид-ов для их аякс-кнопок.
Ответить