Jquery UI 模态表单示例按钮单击不起作用

标签 jquery asp.net jquery-ui

我正在使用 JqueryUI 模态表单,并且由于我是 Jquery 的新手,我认为第一部分是将演示模态表单集成到我正在处理的应用程序中,然后从那里开始进行。

我已经设法让其他更简单的示例正常工作,例如基本的模态弹出框,但是当我尝试使用此模态表单弹出窗口时,什么也没有发生。

CSS/.js 文件位于正确的位置并正确链接:

  <link type="text/css" href="../css/ui-lightness/jquery-ui-1.8.16.custom.css" rel="Stylesheet" />  
<script type="text/javascript" src="../js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="../js/jquery-ui-1.8.16.custom.min.js"></script>

我获取了提供的 CSS,并将其放入我自己的 CSS 文件中,我知道该文件工作正常,我可以看到应用于按钮等的样式。

CSS 是:

/* Ticket Detail Popup */

label, input 
{ 
   display:block; 
}

input.text 
{ 
   margin-bottom:12px; 
   width:95%; 
   padding: .4em; 
}

fieldset 
{ 
   padding:0; 
   border:0; 
   margin-top:25px; 
}

h1 
{ 
   font-size: 1.2em; 
   margin: .6em 0; 
}

div#users-contain 
{ 
   width: 350px; 
   margin: 20px 0; 
}

div#users-contain table 
{ 
   margin: 1em 0; 
   border-collapse: collapse; 
   width: 100%; 
}

div#users-contain table td, div#users-contain table th 
{ 
   border: 1px solid #eee; 
   padding: .6em 10px; 
   text-align: left; 
}

.ui-dialog .ui-state-error 
{ 
   padding: .3em; 
}

.validateTips 
{ 
   border: 1px solid transparent; 
   padding: 0.3em; 
}

我已经准确地包含了此演示中的代码 http://jqueryui.com/demos/dialog/#modal-form像这样:

   <script>
      $(function () {
         // a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
       $("#dialog:ui-dialog").dialog("destroy");

         var name = $("#name"),
         email = $("#email"),
         password = $("#password"),
         allFields = $([]).add(name).add(email).add(password),
         tips = $(".validateTips");

         function updateTips(t) {
            tips
            .text(t)
            .addClass("ui-state-highlight");
            setTimeout(function () {
               tips.removeClass("ui-state-highlight", 1500);
            }, 500);
         }

         function checkLength(o, n, min, max) {
            if (o.val().length > max || o.val().length < min) {
               o.addClass("ui-state-error");
               updateTips("Length of " + n + " must be between " +
               min + " and " + max + ".");
               return false;
            } else {
               return true;
            }
         }

         function checkRegexp(o, regexp, n) {
            if (!(regexp.test(o.val()))) {
               o.addClass("ui-state-error");
               updateTips(n);
               return false;
            } else {
               return true;
            }
         }

         $("#dialog-form").dialog({
            autoOpen: false,
            height: 300,
            width: 350,
            modal: true,
            buttons: {
               "Create an account": function () {
                  var bValid = true;
                  allFields.removeClass("ui-state-error");

                  bValid = bValid && checkLength(name, "username", 3, 16);
                  bValid = bValid && checkLength(email, "email", 6, 80);
                  bValid = bValid && checkLength(password, "password", 5, 16);

                  bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z_])+$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter.");
                  // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                  bValid = bValid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="75001c351f040010070c5b161a18" rel="noreferrer noopener nofollow">[email protected]</a>");
                  bValid = bValid && checkRegexp(password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9");

                  if (bValid) {
                     $("#users tbody").append("<tr>" +
                     "<td>" + name.val() + "</td>" +
                     "<td>" + email.val() + "</td>" +
                     "<td>" + password.val() + "</td>" +
                  "</tr>");
                     $(this).dialog("close");
                  }
               },
               Cancel: function () {
                  $(this).dialog("close");
               }
            },
            close: function () {
               allFields.val("").removeClass("ui-state-error");
            }
         });

         $("#create-user")
         .button()
         .click(function () {
            $("#dialog-form").dialog("open");
         });
      });
   </script>

然后我添加了此代码,它是我之前链接的页面上提供的代码的精简版本:

<div class="demo">

<div id="dialog-form" title="Create new user">
   <p class="validateTips">All form fields are required.</p>

   <form>
   <fieldset>
      <label for="name">Name</label>
      <input type="text" name="name" id="name" class="text ui-widget-content ui-corner-all" />
      <label for="email">Email</label>
      <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />
      <label for="password">Password</label>
      <input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
   </fieldset>
   </form>
</div>



</div><!-- End demo -->

我所做的最后一件事是在 UI 上我想要的位置实现该按钮:

<button id="create-user">Notify</button>

奇怪的是,即使我将示例完全复制到我的页面中,当我单击按钮时也没有发生任何事情,就像我使用自己的代码单击按钮时什么也没有发生一样。

有谁知道为什么会发生这种情况?由于我对 Jquery 和 Web 开发相当陌生,所以我并没有真正看到这里会发生什么。

任何建议都会很棒 谢谢

最佳答案

您尚未添加单击按钮时指定事件的部分。 您必须将其连接起来。

<script type="text/javascript">

  $(function() {

    $( "#create-user" )
                .button()
                .click(function() {
                    $( "#dialog-form" ).dialog( "open" );
                });
  });

</script>

关于Jquery UI 模态表单示例按钮单击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661127/

相关文章:

javascript - 重新初始化可拖动后,jQueryUI 可排序重复元素

jquery - 如何将背景颜色更改为 <DIV/> 然后淡出,最后从 DOM 中删除?

javascript - JQuery 智能微调器 : Callback property is not working

jQuery .each 和 div 的高度

Javascript:计算div中的可见字符

c# - 为什么 foreach 循环在 gridview 的最后一行失败?

javascript - Sharepoint SOAP 请求,如何设置下拉字段?

c# - 折叠面板 JavaScript 问题

asp.net - Microsoft EDGE - 访问此资源所需的安全证书无效

javascript - 一次保持一个 Leaflet 侧边栏打开