2009-12-21 41 views
0
var projectWindow; 
    function btnNew_Click() { 
     var form = document.createElement("form"); 
     form.setAttribute("target", "projectWindow"); 
     form.setAttribute("method", "post"); 
     form.setAttribute("action", "MySite.aspx"); 

     document.body.appendChild(form); 

     var hiddenField = document.createElement("input"); 
     hiddenField.setAttribute("id", "hiddenValue"); 
     hiddenField.setAttribute("name", "ID"); 
     hiddenField.setAttribute("value", "/*get value from javascript*/"); 

     form.appendChild(hiddenField); 

     //Below line I added to fix the new input text field that was visible 
     document.getElementById("hiddenValue").style.visibility = 'hidden'; 

     form.submit(); 

     //The below line i added to give focus if another window is created 
     // The below code does not work 
     projectWindow.focus(); 

     //I also tried this: 
     form.focus(); 
} 

我在上面的代碼中的問題,我從線程獲得: Javascript Post on Form Submit open a new window打開一個新的窗口與交值增強

是,有是在我不能隱藏客戶機顯示的輸入欄,除了我第一次添加的行(可能這是關於從方法getElementbyId返回的許多值)。

第二個問題是我想在新創建或重新加載的窗口中設置焦點,目前它只與新窗口一起工作。

回答

2

嘗試將其添加到新窗口的onload

projectWindow.onload = function(){projectWindow.focus()}; 

沒有測試此代碼,希望這有助於! 哦!並創建一個隱藏的輸入,這樣做:

var hiddenField = document.createElement("input"); 
    hiddenField.setAttribute("type", "hidden"); 

而且,getElementById不應返回多個值,只有一個!如果確實返回多於一個,則會出現問題。

+0

onload的東西不能正常工作, 我如何將onload加到新加載的窗口而不是在opener頁面的代碼。 – 2009-12-21 11:08:28

+0

看來我的問題與Firefox的安全規則有關。這在Internet Explorer中完美工作 – 2009-12-29 12:58:45

0

添加Victor的答案。函數btnNew_Click總是創建一個新的表單元素。

您必須檢查它是否存在,並在提交後不要重新創建或銷燬它。

+0

我已在檢查新窗口的可用性: form.setAttribute(「target」,「projectWindow」); 你能告訴我,如果這是有意的事情,如果不是,請讓我知道我能做些什麼來設置它是正確的。 – 2009-12-21 11:00:34

+0

我指的是由document.createElement創建的表單,而不是窗口。 – 2009-12-21 11:13:48