简体   繁体   English

append div 到 body 点击 jquery

[英]append div to body on click jquery

for adding a little popup to a login i´m using jquery to append a div and its content to the page after the user clicks on the button.为了在登录中添加一个小弹出窗口,我正在使用 jquery 到 append在用户单击按钮后将div 及其内容添加到页面。 I don´t know why, but everytime i click the button, the div appears normally but disappears again immediately.我不知道为什么,但是每次我单击按钮时,div 都会正常显示,但又会立即消失。 Please help.请帮忙。

The Problem is all about the Forgot Password button.问题在于Forgot Password按钮。

Here is the code:这是代码:

 let form = $('form'); let passwordRequest = $('<button>'); passwordRequest.text('Forgot password?'); passwordRequest.attr('id', 'passwordRequest'); passwordRequest.appendTo(form); function requestForgottenPassword() { let popup = $('<div />').appendTo(form); popup.attr('id', 'passwordPopup'); }; $(passwordRequest).on('click', function() { requestForgottenPassword(); });
 #passwordPopup { width: 200px; height: 200px; position: absolute; background-color: aqua; } #logIn { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 50px; background-color: #fff; border-radius: 20px; box-shadow: 2px 5px 40px rgb(201, 201, 201); } form { display: flex; flex-direction: column; align-items: center; padding: 10px; } h2 { font-size: 20px; font-weight: 300; margin-top: 10px; } input[type=text], input[type=password] { padding: 10px; width: 300px; margin: 10px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); font-size: 14px; transition: 200ms; } input[type=submit] { padding: 5px 15px; margin-top: 30px; font-size: 16px; font-weight: 600; outline: none; cursor: pointer; border-radius: 3px; border: 1px solid rgb(114, 114, 114); transition: 100ms; } #passwordRequest { font-size: 14px; text-decoration: none; color: rgb(62, 184, 255); margin-top: 20px; border: none; outline: none; cursor: pointer; background-color: transparent; transition: 100ms; padding: 5px; } #passwordPopup { width: 200px; height: 200px; position: absolute; background-color: aqua; }
 <div id="logIn"> <h1>Login</h1> <form> <h2>Username</h2> <input id="username" type="text"> <h2>Password</h2> <input id="userPassword" type="password"> <input id="submitButton" type="submit" value="Login"> </form> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

https://codepen.io/colintessarzick/pen/GRoMEWm https://codepen.io/colintessarzick/pen/GRoMEWm

<button> is by default type="submit" (even without the type ) - <button>默认是type="submit" (即使没有type ) -
The issue you're experiencing is the form actually being submitted.您遇到的问题是实际提交的表单。

Use type="button" , or with your jQuery script:使用type="button" ,或使用您的 jQuery 脚本:

const passwordRequest = $("<button>", {
  text: "Forgot password?",
  id: "passwordRequest",
  type: "button",
  appendTo: form
});

Example:例子:

 let form = $('form'); const passwordRequest = $("<button>", { text: "Forgot password?", id: "passwordRequest", type: "button", appendTo: form }); function requestForgottenPassword() { let popup = $('<div />').appendTo(form); popup.attr('id', 'passwordPopup'); }; $(passwordRequest).on('click', function() { requestForgottenPassword(); });
 #passwordPopup { width: 200px; height: 200px; position: absolute; background-color: aqua; } #logIn { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 50px; background-color: #fff; border-radius: 20px; box-shadow: 2px 5px 40px rgb(201, 201, 201); } form { display: flex; flex-direction: column; align-items: center; padding: 10px; } h2 { font-size: 20px; font-weight: 300; margin-top: 10px; } input[type=text], input[type=password] { padding: 10px; width: 300px; margin: 10px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); font-size: 14px; transition: 200ms; } input[type=submit] { padding: 5px 15px; margin-top: 30px; font-size: 16px; font-weight: 600; outline: none; cursor: pointer; border-radius: 3px; border: 1px solid rgb(114, 114, 114); transition: 100ms; } #passwordRequest { font-size: 14px; text-decoration: none; color: rgb(62, 184, 255); margin-top: 20px; border: none; outline: none; cursor: pointer; background-color: transparent; transition: 100ms; padding: 5px; } #passwordPopup { width: 200px; height: 200px; position: absolute; background-color: aqua; }
 <div id="logIn"> <h1>Login</h1> <form> <h2>Username</h2> <input id="username" type="text"> <h2>Password</h2> <input id="userPassword" type="password"> <input id="submitButton" type="submit" value="Login"> </form> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

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

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