2011-11-23 48 views
-1

我有以下功能,将显示一个模式:显示模式时,使用JavaScript确认

confirmModal: function (message) { 

// CODE TO SHOW MODAL HAS BEEN REMOVED FOR THIS QUESTION // 

} 

而且因为它被命名空间,它被称为像:uiModal.confirmModal('Test message');

的模式里面我有两个按钮:

<button class="cancel">Cancel</button> 
<button class="ok">Ok</button> 

现在我想要做的是两两件事:

  1. 当我做类似的事情:onsubmit="confirm('Are you sure?');"onclick="confirm('Are you sure?');"它会显示模式而不是警告框。请注意,它需要适用于链接和表单提交。

  2. 模式中的两个按钮需要取消或允许请求发生。我已经取消了关闭模式的罚款,所以这只是允许或拒绝请求发生的情况。

任何人都可以帮忙吗?我在这里查看了一些其他问题,并看到了有关使用window.location($(this).attr('href'))的一些问题,但这只适用于链接,不适用于提交表单。我也看着做window.confirm = uiModal.confirmModal('message');但我会怎么用,在我的一个onclick或的onsubmit

感谢

+0

不知道我真正理解这个问题,但你有没有想过只是结合的提交按钮这个动作:

你可以做这样的事情解决了吗?然后等待用户的输入取消默认的提交事件或让它冒泡? – alonisser

回答

1

这行不通,因为confirm是一个阻塞调用的例子(的JavaScript不会当对话框打开继续),而你的模态对话框不是。

// have some temp var that holds confirmation state 
var isConfirmed = false; 
$("form").submit(function() { 
    // when someone tries to submit the form, verify whether it's confirmed 
    if (!isConfirmed) { 
     // show modal dialog 

     // prevent direct submit 
     return false; 
    } 
}); 

// when hitting the OK button in the modal, change the confirmation state 
$(".modal .ok").click(function() { 
    isConfirmed = true; 
    // and re-submit the form 
    $("form").submit(); 
});