在提交时打开新窗口

3

我有一个关于HTML的问题。我已经编写了代码,但现在我想在某人点击提交按钮后打开一个新窗口,并在这个新窗口中显示他或她输入的文本。

<html>
<body>
<font face="Arial,Helvetica">Hello! 
</body>  
<p><label for="vname">Tell me something:
<input type="text" id="vname" name="vname">
    </font> 
<body>
</p>
</label>
<input type="submit" value="Submit" onclick="myAlert()">
    </html>

它必须在不同的页面上吗?更简单的方法是清空表单页面,然后显示文本。 - mancestr
是的,那也可以!但我该怎么做呢? - Engineer
1
请检查我的答案,如果有帮助,请接受它。 - mancestr
1
首先,你没有一个 form 元素,所以 input type=submit 不会让你走得太远。其次,你不能关闭 body 然后重新打开它。你应该先熟悉一下 HTML。 - Scott Marcus
我编辑了我的回答-请查看。 - mancestr
3个回答

0

你缺少了一些东西。你需要包含一个表单并防止表单被发送。这里是一个示例,可以让你朝着正确的方向前进!

(function(){
 var f, s, w;
 
 f = document.forms.submit;
 
 f.addEventListener("submit", function(e){
  e.preventDefault();
  
  s = "Name: ";
  s += f.name.value;
  s += "<br/>";
  s += "Last Name: ";
  s += f.last.value;
  
  w = window.open();
  w.document.write(s);
 });
}());
<form  id="submit">
 <input type="text" id="name" placeholder="Enter Your Name"/>
 <input type="text" id="last" placeholder="Enter Your Last Name"/>
 <input type="submit" value="Submit"/>
</form>


0

这段代码将帮助您打开一个新窗口,并填充表单值。

function myAlert() {
    var NewWindow= window.open();
    var nameValue = document.getElementById("vname").value;
    NewWindow.document.write("<p>Some text followed by form value </p>"+  nameValue );
    }

嘿,感谢您的回答!但不幸的是,我只得到了一个空白窗口。所以现在没有输入字段了... - Engineer
这是可工作的 CodePen 链接:http://codepen.io/saa93/pen/BQyrNN - Saa_keetin
我不知道为什么,但我得到了一个空白窗口。 - Engineer
我在不同的浏览器中进行测试,以查看可能是您端出了什么问题。为什么之前没有出现呢? - Saa_keetin
其实我不知道,我觉得我可能做错了什么,但现在它运行正常。 - Engineer

-1
首先,您应该使用一个<form>。否则,<input type="submit">实际上不会做任何事情。一旦您拥有了它,就可以使用window.open()
<form onsubmit="return false;">
    <label for="vname">Tell me something:
    <input type="text" id="vname" name="vname">
    <input type="submit" value="Submit" onclick="myAlert()">
</form>

还有 JavaScript 代码:

function myAlert() {
    var results = window.open();
    var vname = document.getElementById("vname").value;
    results.document.write(vname);
}

基本上,JS获取输入的值,打开一个新页面,然后使用document.write来显示结果。

原始答案

(提问者要求我重新发布这个版本的答案)
<form onsubmit="myAlert(); return false">
    <label for="vname">Tell me something:
    <input type="text" id="vname" name="vname">
    <input type="submit" value="Submit">
</form>

而且JavaScript:

function myAlert() {
    var vname = document.getElementById("vname").value;
    document.write(vname);
}

document.write 是古老的方法,会导致整个页面被删除,只有新值被写入。正确的方法是获取一个 DOM 引用到一个元素(可能最初为空),然后将内容写入该元素。 - Scott Marcus
抱歉打扰您,您是否知道我该如何打开一个显示文本的新窗口? - Engineer
@ScottMarcus- 我明白了。我个人认为InnerHTML会更好,但是OA特别要求一个带有输入值的空白页面。 - mancestr
@Zack105 是的,谢谢你,但不幸的是,现在没有输入字段了,它只是打开一个新窗口。我试图找出缺少了什么,但我不知道... - Engineer
@MrPetroleum- 我有点困惑... 你是想让输入字段在第一页还是新页面上? - mancestr
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接