2013-04-29 126 views
1

早些时候,我找到了一个我没有的问题的解决方案,现在我创建了更多的问题,希望找到解决方案。重置表单,重置字段值,重置焦点所有onSubmit()

我提交URL形式:

<form name="urlField" onsubmit="return submitURLFieldForm();"> 
    <input type="text" name="address" id="addressfield" /> 
</form> 

这个网址在新标签/窗口中打开。现在我想要重置该字段,将“http://”添加回来并将焦点放在最后,准备输入新的URL。下面我的JS适用于除Opera之外的所有浏览器。由于网页加载正确在所有浏览器包括Opera(场focus() & value()都是原来在<body>标签设置)我想那一定是我的onSubmit以下功能相关的问题:

function submitURLFieldForm() { 
var url = document.getElementById('addressfield').value; 
if (!url.match(/^[a-zA-Z]+:\/\//)) { 
    url = 'http://' + url; 
} 
window.open(url); 
    document.urlField.address.reset(); 
    document.urlField.address.focus(); 
    document.urlField.address.value='http\://'; 
} 

是否有另写这个的方法?这是不是马虎?

+0

我不知道我明白你在做什么。提交时,您正试图用相同的表单打开新页面,但所有值都重置? – 2013-04-29 17:17:35

+0

如果它在Opera中不起作用,请检查javascript调试器。它说什么? – 2013-04-29 17:21:26

+0

onSubmit我试图用提供的URL(该部分工作)打开一个新的选项卡/窗口,但然后清除输入的文本,替换“http://”并将焦点放在最后,以便当访问者回到他们提交提交时的原始标签时,他们会收到“新”表单。 – LyleCrumbstorm 2013-04-29 17:38:48

回答

1
<head> 
<script type="text/javascript"> 
function submitURLFieldForm() { 
    var url = document.getElementById('addressfield').value; 
    if (!url.match(/^[a-zA-Z]+:\/\//)) { 
     url = 'http://' + url; 
    } 
    window.open(url); 
    document.getElementsByName('urlField')[0].reset(); 
    resetForm(); 
    return false; 
} 
window.onload = function() { 
    resetForm(); 
} 
function resetForm() { 
    var address = document.getElementsByName('address')[0]; 
    address.focus(); 
    address.value = "http://"; 
} 
</script> 

</head> 
<body> 
    <form name="urlField" onsubmit="return submitURLFieldForm();"> 
     <input type="text" name="address" id="addressfield" /> 
    </form> 
</body> 

编辑
检查歌剧控制台后,增加了一些变化。我希望它按照你的想法工作。

+0

,可以在所有浏览器中使用,就像我的OP一样,但不在Opera中。在Opera中,字段被重置,“http://”被放回,但最后没有焦点。再次,因为它的工作原理当页面最初加载也许我应该废除额外的重置,焦点和价值JS和只是重新加载页面?我正试图让它现在工作... – LyleCrumbstorm 2013-04-29 17:29:03

+0

我们有一个赢家!这涉及到。为什么要这么多的箍来取悦歌剧?!谢谢 - 这个石头! – LyleCrumbstorm 2013-04-29 18:10:39