开发者

How to achieve a return confirm like dialog but using jgrowl?

开发者 https://www.devze.com 2023-03-28 08:28 出处:网络
I am working with a forum script (simple machines forum) It is using this kind of javascript confirmation messages:

I am working with a forum script (simple machines forum) It is using this kind of javascript confirmation messages:

<a href="http://domain.net/index.php?action=deletemsg;topic=1.0;msg=1;c6c7a67=f9e1fd867513be56e5aaaf710d5f29f7" onclick="return confirm('Remove this messa开发者_StackOverflowge?');">Remove</a>

And I want to use jgrowl instead that... something like:

<a href="http://domain.net/index.php?action=deletemsg;topic=1.0;msg=1;c6c7a67=f9e1fd867513be56e5aaaf710d5f29f7" onclick="$.jGrowl('Remove this message?', { header: 'Confirmation', sticky: true });"/>Remove</a>

But... how to achieve true/false javascript return using jgrowl? Can be this done in just one line?

Best regards! luciano


edited to support using the href

you can't do it just like that because jGrowl will not be modal and block your page's behaviour.

However you could create a function for the code you want to execute after the choice was done, and then call it from within the notification

check this example http://jsfiddle.net/rcxVG/11/

html

<body>
    <a href="javascript: startDemo(1); alert('a');">link for 1</a><br>
    <a href="javascript: startDemo(2); ">link for 2</a><br>
        Will we notify again<div id="will-notitfy-again">yes</div>

    <br>
    now... If you want to return then
    <a href="http://www.google.com" data-confirmed="false" onclick="return returnModal(this);">click me</a>
</body>

js

function startDemo(id)
{
    $.jGrowl("to do not notify again click <a href='javascript:notFor("+id+")' onclick='closeNotif(this);'>here</a>!", { sticky: true });
}

function notFor(id){
    alert("not anymore for "+id);
    $("#will-notitfy-again").html("remember, notFor was hit for"+id);

}

function closeNotif(panel){
    $(".jGrowl-notification").has(panel).find(".jGrowl-close").click();
}
var counter=0;
var confirmedAttr="data-confirmed";
function returnModal(field){
    var $field=$(field);
    if($field.attr(confirmedAttr)=="true"){
        location.href=$field.attr("href");
    }else{
        counter++;
        //save the element somewhere so we can use it (don't know if it has an unique-id)
        $(document).data("id"+counter,$field);
        $.jGrowl("click <a href='javascript:confirmClick("+counter+")' onclick='closeNotif(this);'>here</a> to go to google!", { sticky: true });
        return false;
    }
}
function confirmClick(variableId){
    var $field=$(document).data("id"+variableId);
    $field.attr(confirmedAttr,"true");
    $field.click();
}

Let me know if this was good enought

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号