2013-04-29 123 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