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返回的许多值)。
第二个问题是我想在新创建或重新加载的窗口中设置焦点,目前它只适用于新窗口。
答案 0 :(得分:2)
尝试将其添加到新窗口的onload
:
projectWindow.onload = function(){projectWindow.focus()};
没有测试此代码,希望这有帮助! 哦!并创建一个隐藏的输入,执行以下操作:
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
此外,getElementById
不应该返回多个值,只有一个!如果它确实返回多个,那就有问题了。
答案 1 :(得分:0)
补充Victor的答案。函数btnNew_Click
总是创建一个新的表单元素。
您必须检查它是否存在,而不是在提交后重新创建或销毁它。