我没有尝试使用JAVASCRIPT提交表格!!“上述言论具有误导性,不恰当和混淆
我有一个html表单,其中包含多个元素(都具有唯一的#id),当使用鼠标单击时,正确地使用action = value对提交表单。
<html><body><form id="frm-table" name="frm-table" method=get>
<!-- the form has an action url to call php script that interprets passed values and serves new dynamic page -->
<!-- @20140820 - #id and #name added to form -->
<button id="cancel-btn" type="submit" name="action" value="cancel"><img src="http://foo.localhost/img/cancel16.png" alt="Cancel" title="Cancel" class="btn" name="btn_c" /></button>
<!-- several other inputs eg type=text and buttons type=submit -->
</form></body>
我有一个用于捕获文档ESC keydown的js脚本,例如:显示一个警告以确认捕获。
document.onkeydown = function(evt) {
evt = evt || window.event;
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if (evt.keyCode == 27) {
if (document.getElementById('cancel-btn') != null) {
// alert('Esc key pressed.'); //just to test capturing ESC key - OK
// testing suggestion 201408211700
document.getElementById('frm-table').action = 'http://foo.localhost/index.php?page=bg'
document.getElementById('frm-table').submit(); //suggestion does not work - form not submitted
// document.getElementById('cancel-btn').click(); //original does not work
}
evt.returnValue=false;
}
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
};
当警报被.click()替换时,没有任何反应。
我不明白为什么本机点击事件没有被触发。
我知道按钮元素上没有click事件,但是它接受并动作鼠标点击它。调用函数提交表单(通过向按钮添加监听器事件不起作用 - 它提交表单但发布的值不包括按钮action = value对。
还有另一个js命令来触发按钮元素的本机功能吗?重要的是要注意,该按钮是几个type = submit按钮之一,所有这些按钮都提供不同的动作 - 值对。
[编辑]试图澄清: 我不是试图为按钮元素添加一个处理程序,只是试图复制按钮的native type = submit函数。 (鼠标单击该按钮会使用重要动作=值对提交表单,而不包含任何js) 我只能选择添加javascript,而不是更改页面的动态生成,因为它是更大的应用程序的一部分。
所以尽管我感谢那些已经回复的人,但到目前为止,答案还没有解决问题。
在Firfox31和IE9中测试
答案 0 :(得分:0)
这是因为<button>
上没有onclick
处理程序,所以它不会被触发。
而不是
document.getElementById('cancel-btn').click();
你可以做到
document.forms[0].reset();
也将重置表单。
除非名为cancel-btn
的按钮实际上必须提交表格,否则您需要:
document.forms[0].submit();