2011-06-07 46 views
4

我必须在弹出窗口中打开html窗体。弹出窗口不应该是一个窗口(通常是使用window.open()创建的),而应该像下面的链接中出现的一样(在Firefox中打开) http://www.w3schools.com/js/tryit.asp?filename=tryjs_prompt 但这个代码的问题是,我无法更改内容从“请输入您的姓名”弹出到我的html表单中。 虽然搜索,我发现我们不能改变弹出提示框的内容,唯一的解决办法是创建自己的弹出... 没有更简单的解决方案吗?使用html/javascript/css弹出窗体

谢谢....

+0

Google“Javascript Modals”或“JQuery Modals” – 2011-06-07 13:28:27

+0

我相信“无法更改[popup]内容”评论指的是_redirect-preventing_upups。出于明显的安全原因,该消息通常被浏览器覆盖。下面是一个演示问题的小提琴:http://jsfiddle.net/k2fYM/ – 2014-01-27 11:51:48

回答

19

请尝试jQuery UI dialog

这里是forms demo

对于移动应用,看看jQuery Mobile - Creating dialogs

+0

非常感谢.....这正是我想要的...... :) – 2011-06-08 08:38:03

+0

@ Neetu欢迎您。请[接受答案然后](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – mplungjan 2011-06-08 09:12:05

+0

但这里又来了一个问题。实际上,我正在为移动浏览器制作网站。我使用jquery弹出了使用jquery的笔记本电脑的工作方式(正如您所建议的那样),但现在当我尝试在android手机上进行测试时,该页面未打开。我发布了这个问题http://stackoverflow.com/questions/6292647/jquery-code-is-not-running-on-android-phone。你能帮我现在... – 2011-06-09 13:21:37

1

但这段代码的问题是,我可以从“请输入您的姓名”的内容弹出内容不会改变我的HTML表单。

嗯。只需更改传递给prompt()函数的字符串即可。

搜索时,我发现有我们不能改变弹出提示框

的你不能改变标题内容。您可以更改内容,它是传递给prompt()函数的第一个参数。

+0

但提示并不需要HTML,只有文字 – mplungjan 2011-06-07 13:06:34

-1

有很多可用。尝试使用Jquery或DHTML的Modal窗口会很好。将内容放入div中或动态更改div中的内容并将其显示给用户。它不会是一个弹出窗口,而是一个模态窗口。
Jquery的Thickbox会清除你的问题。

+0

DHTML ???在目前的情况下,我很久没有听说过。 – Loktar 2011-06-07 13:31:45

0

只需将“请输入您的姓名”替换为您所需的内容即可完成此工作。我错过了什么吗?

16

Live Demo

听起来像是你可能需要一个灯箱,既然你没有标记包含使用jQuery你的问题是如何让一个纯粹的JS例子。

JS

var opener = document.getElementById("opener"); 

opener.onclick = function(){ 

    var lightbox = document.getElementById("lightbox"), 
     dimmer = document.createElement("div"); 

    dimmer.style.width = window.innerWidth + 'px'; 
    dimmer.style.height = window.innerHeight + 'px'; 
    dimmer.className = 'dimmer'; 

    dimmer.onclick = function(){ 
     document.body.removeChild(this); 
     lightbox.style.visibility = 'hidden'; 
    } 

    document.body.appendChild(dimmer); 

    lightbox.style.visibility = 'visible'; 
    lightbox.style.top = window.innerHeight/2 - 50 + 'px'; 
    lightbox.style.left = window.innerWidth/2 - 100 + 'px'; 
    return false; 
} 

标记

<div id="lightbox">Testing out the lightbox</div> 
<a href="#" id="opener">Click me</a> 

CSS

#lightbox{ 
    visibility:hidden; 
    position:absolute; 
    background:red; 
    border:2px solid #3c3c3c; 
    color:white; 
    z-index:100; 
    width: 200px; 
    height:100px; 
    padding:20px; 
} 

.dimmer{ 
    background: #000; 
    position: absolute; 
    opacity: .5; 
    top: 0; 
    z-index:99; 
} 
+5

我正在寻找一种不使用JQuery的解决方案,这让我开始了我想追求的道路。感谢帖子! – grw 2013-03-14 15:32:14

+0

真棒:)很高兴它帮助你。 – Loktar 2013-03-14 17:28:00

+1

非常好,谢谢。对于任何尝试将其应用于现有应用程序的人来说:'#lightbox'类中唯一两个重要的部分是'position:absolute;'和'z-index:100'。没有这两个,弹出窗口实际上会在调光器下方。 – 2015-08-24 22:14:20

0

这里完整的例子是一种资源,你可以编辑和使用 下载源代码或在这里观看现场演示 http://purpledesign.in/blog/pop-out-a-form-using-jquery-and-javascript/

A DD按钮或链接到您的网页这样

<p><a href="#inline">click to open</a></p> 

“#inline”这里应该是的“ID”将包含的形式。

<div id="inline"> 
<h2>Send us a Message</h2> 
<form id="contact" name="contact" action="#" method="post"> 
<label for="email">Your E-mail</label> 
<input type="email" id="email" name="email" class="txt"> 
<br> 
<label for="msg">Enter a Message</label> 
<textarea id="msg" name="msg" class="txtarea"></textarea> 
<button id="send">Send E-mail</button> 
</form> 
</div> 

包含这些脚本来监听点击事件。如果你已经在你的形式的操作定义,您可以使用“的preventDefault()”方法

<script type="text/javascript"> 
$(document).ready(function() { 
$(".modalbox").fancybox(); 
$("#contact").submit(function() { return false; }); 
$("#send").on("click", function(){ 
var emailval = $("#email").val(); 
var msgval = $("#msg").val(); 
var msglen = msgval.length; 
var mailvalid = validateEmail(emailval); 
if(mailvalid == false) { 
$("#email").addClass("error"); 
} 
else if(mailvalid == true){ 
$("#email").removeClass("error"); 
} 

if(msglen < 4) { 
$("#msg").addClass("error"); 
} 
else if(msglen >= 4){ 
$("#msg").removeClass("error"); 
} 

if(mailvalid == true && msglen >= 4) { 
// if both validate we attempt to send the e-mail 
// first we hide the submit btn so the user doesnt click twice 
$("#send").replaceWith("<em>sending...</em>"); 
//This will post it to the php page 
$.ajax({ 
type: 'POST', 
url: 'sendmessage.php', 
data: $("#contact").serialize(), 
success: function(data) { 
if(data == "true") { 
$("#contact").fadeOut("fast", function(){ 
//Display a message on successful posting for 1 sec 
$(this).before("<p><strong>Success! Your feedback has been sent, thanks :)</strong></p>"); 
setTimeout("$.fancybox.close()", 1000); 
}); 
} 
} 
}); 
} 
}); 
}); 
</script> 

您可以添加你想要在你的PHP文件做任何事情。