<button>在firefox上提交,防止默认</button>

时间:2013-07-04 11:39:51

标签: javascript html events

我有<button> onclick功能。我需要将一个参数传递给这样的函数:

function go(id){
    dosomething();
}

但我不知道为什么,在firefox <button>按下时会在表单上执行提交。

所以我需要阻止默认行为,但我不知道如何在不传递event参数的情况下执行此操作。我不知道如何传递一个参数和事件参数来共同运作。

return false;

不要对我工作。

我有这个:

<button id="qtd" class="btn btnqtdmais inline qtdinputbtn" onclick="soma(<?=$item['dados']['id']?>)">+</button>

功能:

function soma(id){
    dosomething();
}

4 个答案:

答案 0 :(得分:4)

事件参数应始终为最后一次

 function myfunction (id, event) {
    event.preventDefault();
    dosomething();
    return false;
 }

像这样调用函数

 button.onclick = function(e) { myfunction(id, e) };

 <button id="qtd" class="btn btnqtdmais inline qtdinputbtn" onclick="soma(<?=$item['dados']['id']?>, event)">+</button>

注意:我在Firefox上尝试了两次成功。

firefox事件行为非常奇怪,你必须明确传递事件参数或它不会工作,不像chrome和dare我说MS这将没有参数

function myfunction (id) {
  event.preventDefault();
  dosomething();
  return false;
 }

修改 这也有效

 function soma (event, id) {
    event.preventDefault();
    dosomething();
    return false;
 }
 <button id="qtd" class="btn btnqtdmais inline qtdinputbtn" onclick="soma(event, <?=$item['dados']['id']?>)">+</button>

答案 1 :(得分:1)

尝试使用onclick="this.preventDefault(); go(id);"

答案 2 :(得分:1)

您可以尝试使用一些javascript来取消按钮的默认操作

if (form.addEventListener) {
  return form.addEventListener('submit', function(e) {
    return e.preventDefault();
  }, true);
}

答案 3 :(得分:1)

Html代码:

 <button type="button" id="btn1" onclick="return handleButton(event,'btnSearch');"/>

JavaScript代码:

function handleButton(event, searchButtonId) {
    event = event || window.event;
    if (event.keyCode == 13) {
       alert("Enter key pressed");
    }
}

您必须将event参数作为第一个参数传递给函数。 希望它能解决你的问题。