Javascript Jquery:如何仅从元素的存在触发模态窗口

Javascript Jquery:如何仅从元素的存在触发模态窗口,javascript,jquery,modal-dialog,Javascript,Jquery,Modal Dialog,如果提交时出现一个或多个错误,我有一个表单可以生成以下标记: <ul class="memError"> <li>Error 1.</li> <li>Error 2.</li> </ul> 错误1 错误2 我想将此元素设置为提交后显示的模式窗口,单击即可关闭。我有jquery,但找不到触发模式窗口的正确事件。以下是我使用的脚本,改编自: // 我已经为#mask和.memError设置了与的样式非

如果提交时出现一个或多个错误,我有一个表单可以生成以下标记:

<ul class="memError">
    <li>Error 1.</li>
    <li>Error 2.</li>
</ul>
  • 错误1
  • 错误2
我想将此元素设置为提交后显示的模式窗口,单击即可关闭。我有jquery,但找不到触发模式窗口的正确事件。以下是我使用的脚本,改编自:


//
我已经为
#mask
.memError
设置了与的样式非常相同的样式,但是在加载
ul.memError
时无法显示任何内容。我已经尝试过其他的方法来蒙混过关,但我还没有掌握实现这一点所需的javascript


有人能给我指出正确的方向吗?

我玩过现场直播之类的游戏,但似乎找不到触发它的方法。在插入新项以触发自定义事件时,可以使用一些内联代码

不确定这是否适合您的实现

在“memError”中的这些错误是使用ajax还是HTTP页面加载加载的

看一看这个例子,不是回答所有你需要的,而是可能给你一些想法,不过这是一个onclick事件。但如果您的错误是使用一些ajax显示的,那么您可以将其更改为当ajax错误加载到页面中时。我稍后会尝试更新它

$(function() {

$('#clickMe').click(function(event) {
    var mytext = $('#myText').val();


    $('<div id="dialog">'+mytext+'</div>').appendTo('body');            
        event.preventDefault();

                $("#dialog").dialog({                                   
                        width: 600,
                        modal: true,
                        close: function(event, ui) {
                                $("#dialog").remove();
                                }
                        });
    }); //close click
});


<h3 id="clickMe">Open dialog</h3>
<textarea cols="0" rows="0" id="myText" style="display:none">Some hidden text display none</textarea>
$(函数(){
$('#clickMe')。单击(函数(事件){
var mytext=$('#mytext').val();
$(''+mytext+'').appendTo('body');
event.preventDefault();
$(“#dialog”).dialog({
宽度:600,
莫代尔:是的,
关闭:功能(事件、用户界面){
$(“#对话框”).remove();
}
});
});//关闭单击
});
打开对话框
某些隐藏文本显示“无”

如果这是一个普通的旧表单提交,那么只需在document.ready上选中$('.memerror').length>0即可。。如果这是真的,那么做其余的。您不需要添加加载事件处理程序,因为ul已经加载。如果是ajax提交,那么您应该使用的是成功事件,它看起来好像您试图订阅的对象在您给出的示例中是错误的。尝试改用窗体的事件。您应该使用
submit()
事件,而不是表单按钮(或任何其他元素)上的单击事件,因为在填写表单时,用户无需单击按钮即可轻松提交表单。这使模态窗口的显示更加可靠

<script type="text/javascript">
$(document).ready(function() {
    $('form').submit(function() {//<- Submit event

        // ...
        // Modal Window Code ommitted 
        // to make example code more clear
        // ...

        // From what I understand, the following line
        // is the "magic" that makes the modal window display
        // (I haven't tested this code)
        $(id).fadeIn(2000);
    });
});
</script>

$(文档).ready(函数(){

$('form').submit(function(){/这是解决我的问题的触发器:

if ($('.memError').length > 0) {
    $(function() {
        // ...
    });
}

感谢Scott!这是一个简单的旧表单提交,错误消息出现在HTTP页面加载之后,并且
if($('.myElement').length>0)
使我能够做到。

您希望在提交之后发生这种情况(文档准备就绪)还是ajax提交?顺便问一下,ul没有加载事件>您希望在提交之后发生这种情况吗(文档准备就绪)还是ajax提交?它是非ajax提交,文档准备就绪。本质上,如果指定的ul存在,我只需要这样做。
if ($('.memError').length > 0) {
    $(function() {
        // ...
    });
}