[英]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.