我有这个HTML表单
<form name="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data">
<input name="pinid" id="pinid" type="hidden">
<input type="submit" name="submit" id="post" value="Lets Go" class="formButtonMap">
</form>
pinid
使用JavaScript动态获取值。当它获得一个值时,我会提醒它并且它有效。
但是,当我点击Lets Go
按钮时,没有任何反应。我看到Internet Explorer加载了几分钟,然后我收到消息“网页没有响应”。如果我点击刷新它会转到anotherpage.php
,但表单中的值没有到达服务器。
很少显示此消息:
Visual Studio即时调试程序
在iexplorer.exe [688]
中发生未处理的win32异常可能的调试器:
Microsoft Visual Studio 2012新实例
仅在Internet Explorer 11.0.2中观察到此行为。该表单适用于旧版Internet Explorer以及Chrome和Firefox。我在IE的控制台中没有错误。
以下是JavaScript代码,位于表单上方:
// called when another button is clicked - basicaly is websockets
function save() {
var so = new WebSocket("ws://localhost:8000");
so.onerror = function (evt) {
alert('problem');
}
if (sara == 'LINES') {
so.onopen = function() {
so.send(JSON.stringify({
command: 'insertAll',
name: document.getElementById('name').value
}));
}
}
if (sara == 'POLY') {
so.onopen = function() {
so.send(JSON.stringify({
command: 'insertHalf',
name: document.getElementById('name').value
}));
}
}
so.onmessage = function (evt) {
var received_msg = evt.data;
document.getElementById("next").style.display = "block";
document.getElementById("name").value = "";
document.getElementById("descr").value = "";
clearLinks();
document.getElementById("pinid").value = received_msg;
alert(document.getElementById("pinid").value); // works
so.close();
}
}
我尝试使用document.getElementById("nextform").submit();
编辑代码,问题仍然存在。
是我吗?这是一个错误吗?我错过了什么?
答案 0 :(得分:4)
也许不是你的问题,但是:
<input type="submit" name="submit" ... >
为表单控件提供 submit 的名称将使用对控件的引用替换表单的 submit 方法,因此调用form.submit()
将尝试“调用“输入。
答案 1 :(得分:4)
我认为在IE中将表单值设置为空时这是一个错误。
我建议尝试一种不同的方法来重置表单值,我以前使用过这种方法:
document.getElementById('name').parentNode.innerHTML = '';
答案 2 :(得分:3)
嗨,您的代码中可能存在问题,您错过了在表单中添加ID,并且您尝试通过它未定义的ID来访问表单。
document.getElementById("nextform").submit();
必需的
<form name="nextform" id="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data">
...
...
...
</form>
答案 3 :(得分:0)
跟踪sunpage.php页面收到回发时发生的事情,evt.data可能没有按预期编码(是二进制还是文本,如果是文本,是utf-8)。
回发到另一个页面,其中所有内容都输出回发的值。
套接字是否会抛出异常?
so.close();
答案 4 :(得分:0)
我的原始代码包含一个包含超过5个字段的表单。提交时调用save()
。 save()
函数也使用JS清除字段。
IE11中存在一个错误,如果您尝试使用JS清除超过5个字段,则会导致浏览器崩溃。请参阅here,有解决方法。
该错误导致第一个表单崩溃,然后崩溃nextform
表单以及浏览器。我APOLOGIZE没有发布我的所有代码,我不知道它与第一个表单有关。
因为我认为同一段代码有两个不同的问题,我发布了另一个问题,非常相似,here
答案 5 :(得分:0)
在我的情况下,输入按钮具有相同的ID和NAME。因此,您可以检查它们是否相同,如果它们确实相同,则使用其中一个参数的不同值。
我希望它有所帮助。