jquery加载后在新窗口中按id附加innerHTML



我正在尝试使用jquery来:

  1. 打开一个新窗口/选项卡(相同的域,不同的页面)
  2. 然后将文本添加到文本框(id = "BUpdates_SQL_Statement")
  3. 然后单击此按钮:<input type="submit" value="Apply Changes" name="BUpdates_Submit" id="BUpdates_Submit">
  4. 然后关上窗户

这是起始页中的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发送一个带有一个参数sqlPOST请求。从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帮我解决了这个问题!

相关内容

  • 没有找到相关文章

最新更新