我问这个问题只是为了学习目的,因为我什至在写这篇文章之前就解决了这个问题,但也许你会指出一些对其他人有用的东西。
我正在使用Twitter Bootstrap及其模态库,这就是我的代码的作用。我们打开一个模态,要求用户输入一些 json,然后用户按下“计算按钮”来计算数据,然后模态关闭,因为data-dismiss
.
我只想知道是否可以data-dismiss
使用 jQuery、javascript 或其他东西来阻止由 html 属性触发的操作。
这是模态的 HMTL 代码:
<div class="modal hide fade" id="source_modal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>Manually insert the data</h3>
</div>
<div class="modal-body">
<textarea class="source_input">Insert your data here</textarea>
<div class="clear"></div>
<a href="#" class="btn action_clear">Clear</a>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a class="btn btn-primary action_compute" data-dismiss="modal" href="#"><i class="icon-fire"></i> Compute</a>
</div>
</div>
注意最后一个按钮(计算按钮)有data-dismiss="modal"
所以基本上,锚的类try catch
附加了一个函数。action_compute
请参阅此 jQuery 代码:
// compute graph with json input
$('.action_compute').on('click', function(event) {
try
{
var json = JSON.parse($('.source_input').val());
create_graph(json);
}
catch(err)
{
txt="There was an with your json data.\n";
txt+="Error description: " + err.message + "\n\n";
txt+="you can try to validate it with JSONLint. You may also leave the textarea blank for default behaviour";
alert(txt);
}
});
是否可以防止触发的动作data-dismiss
?
笔记:
- Twitter bootstrap 提供了一个 jquery 方法来关闭模态,所以我删除了
data-dismiss
,并且我$('#upload_modal').modal('hide');
只在尝试结束时才使用关闭模态,这样它就可以完成我想要的操作。 - 当放置在 jQuery 代码的第一行时, jQuery
event.preventDefault();
不会停止关闭操作catch(err)
;)