简体   繁体   English

jQuery的模态/对话框形式不起作用

[英]Jquery Modal/Dialog form not working

Hi i'm new to coding & trying to use the Jquery library Dialog/Modal form. 嗨,我是编码和尝试使用Jquery库Dialog / Modal表单的新手。 I have all my CSS, JS and HTML in place but when i click on the "Create new user" the dialog/modal does not appear (the function behind the button does not work). 我已经放置了所有CSS,JS和HTML,但是当我单击“创建新用户”时,对话框/模式不会出现(按钮后面的功能不起作用)。 I get the below error in the console - Any help would be much appreciated: 我在控制台中收到以下错误-任何帮助将不胜感激:

error message in console: 控制台中的错误消息:

Uncaught TypeError: undefined is not a function    main.js
and it points to this ---> dialog = $( "#dialog-form" ).dialog({

main.js file main.js文件

$(function() {
    var dialog, form,

    // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
    emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
    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;
    }
  }

  function addUser() {
    var valid = true;
    allFields.removeClass( "ui-state-error" );

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

    valid = valid && checkRegexp( name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter." );
    valid = valid && checkRegexp( email, emailRegex, "eg. ui@jquery.com" );
    valid = valid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9" );

    if ( valid ) {
      $( "#users tbody" ).append( "<tr>" +
        "<td>" + name.val() + "</td>" +
        "<td>" + email.val() + "</td>" +
        "<td>" + password.val() + "</td>" +
      "</tr>" );
      dialog.dialog( "close" );
    }
    return valid;
  }

  dialog = $( "#dialog-form" ).dialog({
    autoOpen: false,
    height: 300,
    width: 350,
    modal: true,
    buttons: {
      "Create an account": addUser,
      Cancel: function() {
        dialog.dialog( "close" );
      }
    },
    close: function() {
      form[ 0 ].reset();
      allFields.removeClass( "ui-state-error" );
    }
  });

  form = dialog.find( "form" ).on( "submit", function( event ) {
    event.preventDefault();
    addUser();
  });

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

index.html file index.html文件

<html>
<head>
  <title>Modal form</title>
  <link rel="stylesheet" type="text/css" media="all" href="css/reset.css" />
  <link rel="stylesheet" type="text/css" media="all" href="css/grid.css" />  
  <link rel="stylesheet" type="text/css" media="all" href="css/style.css" /> 
  <link href='http://fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'>
  <script src="js/jquery-1.11.2.js"></script>
  <script src="js/main.js"></script>
</head>
<body>

  <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" value="Jane Smith" class="text ui-widget-content ui-corner-all">
        <label for="email">Email</label>
        <input type="text" name="email" id="email" value="jane@smith.com" class="text ui-widget-content ui-corner-all">
        <label for="password">Password</label>
        <input type="password" name="password" id="password" value="xxxxxxx" class="text ui-widget-content ui-corner-all">
        <!-- Allow form submission with keyboard without duplicating the dialog button -->
        <input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
      </fieldset>
    </form>
  </div>

  <div id="users-contain" class="ui-widget">
    <h1>Existing Users:</h1>
    <table id="users" class="ui-widget ui-widget-content">
      <thead>
        <tr class="ui-widget-header ">
          <th>Name</th>
          <th>Email</th>
          <th>Password</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>John Doe</td>
          <td>john.doe@example.com</td>
          <td>johndoe1</td>
        </tr>
      </tbody>
    </table>
  </div>
  <button id="create-user">Create new user</button>

</body>
</html>

make sure you have jquery ui and the css that goes with the ui. 确保您拥有jui ui和ui附带的css。 your code is good, just add this in your <head> : 您的代码是好的,只需将其添加到您的<head>

<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>

see working demo: http://jsfiddle.net/swm53ran/221/ 参见工作演示: http : //jsfiddle.net/swm53ran/221/

It looks like you have imported jquery and not jquery-ui. 看来您已经导入了jquery而不是jquery-ui。 Try doing importing jquery-ui as well and you should be fine. 尝试也导入jquery-ui,就可以了。

add this line to your head: 将此行添加到您的头上:

<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>

add this css as well: 还要添加此CSS:

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM