javascript:一个按钮元素不能正常工作click()

时间:2014-08-19 10:38:39

标签: javascript click

我没有尝试使用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中测试

1 个答案:

答案 0 :(得分:0)

这是因为<button>上没有onclick处理程序,所以它不会被触发。

而不是

document.getElementById('cancel-btn').click();

你可以做到

document.forms[0].reset();

也将重置表单。

除非名为cancel-btn的按钮实际上必须提交表格,否则您需要:

document.forms[0].submit();