我正在尝试使用jquery来:
- 打开一个新窗口/选项卡(相同的域,不同的页面)
- 然后将文本添加到文本框(
id = "BUpdates_SQL_Statement"
) - 然后单击此按钮:
<input type="submit" value="Apply Changes" name="BUpdates_Submit" id="BUpdates_Submit">
- 然后关上窗户
这是起始页中的onclick元素(我们称之为www.mydomain.com/firstpage):
<li id="MainNav_Update"><span class="MainMenuText" onclick="runUpdateWindow();">Update</span></li>
这是我想在新窗口中编辑的区域(我们称之为www.mydomain.com/secondpage)
<textarea id="BUpdates_SQL_Statement"></textarea>
<input type="submit" value="Apply Changes" id="BUpdates_Submit">
<a onclick="v$('BUpdates_Submit').click();return false;" href="javascript:void(0);"><span>Apply Changes</span></a>
附带说明:v$('BUpdates_Submit').click();return false;"
用于另一个外部js文件,它与我在这里尝试做的事情无关。这是我的jquery:
function runUpdateWindow() {
var updateWindow = window.open("www.mydomain.com/secondpage", "blank");
}
var updateSQL = 'UPDATE TABLE ...';
$(updateWindow).on("load", function (){
$("BUpdates_SQL_Statement", updateWindow.document).append(updateSQL);
$('BUpdates_Submit').trigger('click');
});
updateWindow.close();
www.mydomain.com/secondpage
在一个新的选项卡中打开,但BUpdates_SQL_Statement
应该是:
<textarea id="BUpdates_SQL_Statement">
UPDATE TABLE...
</textarea>
但它仍然是空白的。
如有任何意见,我将不胜感激。提前感谢!
据我所知,您尝试的是自动填写和提交表单,并选择了一种看起来相当简单的方法。不过,不管这是否有效,可能还有一种更简单的方法。
想想当你打开另一个页面,填写表格,然后按提交时会发生什么。如果它是一个没有JavaScript干扰的普通HTML表单,那么您可能只会收到一个POST
请求。如果我有这个表格,说:
<form action="run-sql" method="post">
<textarea name="sql"></textarea>
<input type="submit" value="Run query">
</form>
当我用一些SQL提交它时,浏览器会向run-sql
发送一个带有一个参数sql
的POST
请求。从JavaScript启动POST
请求相对简单,至少与自动化另一个网页相比是这样。从JavaScript发出HTTP请求通常被称为AJAX,幸运的是,jQuery的$.post
函数让它变得很容易。
那么如何使用它呢?在这个特定的例子中,它将像这样简单:
var mySQL = "select * from employees"; // e.g.
jQuery.post("run-sql", {sql: mySQL}, function() {
alert("Success!");
});
现在,有些表格并没有这么简单,但值得一试,看看你的表格是否是
使用iframe而不是新窗口:
function runUpdateWindow() {
var frame = document.createElement('iframe');
frame.src = "www.mydomain.com/secondpage";
document.body.appendChild(frame);
var frameWindow = frame.contentWindow
var updateSQL = 'UPDATE TABLE...';
frameWindow.onload = function (){
var textarea = frameWindow.document.getElementById("BUpdates_SQL_Statement");
var button = frameWindow.document.getElementById("BUpdates_Submit");
textarea.value = updateSQL;
frameWindow.v$('BUpdates_Submit').click();
};
}
非常感谢Dagg Nabbit帮我解决了这个问题!