为什么此代码在Firefox中不起作用

时间:2015-09-09 13:35:35

标签: javascript firefox

我无法理解为什么这段代码在Firefox中不起作用(它适用于Safari,Chrome和IE)。 m1,n1,m2和n2是四个文本输入

<button class="btn btn-warning"><a style="color:white;" class="btn" onclick="save()" > Calcola </a></button> ...

... <script type="text/javascript"> 
  function save(){
    var m1 = document.getElementById("m1").value;
    var n1 = document.getElementById("n1").value;

    var m2 = document.getElementById("m2").value;
    var n2 = document.getElementById("n2").value; 

    window.location = ("?clicco=true&m1="+m1+"&n1="+n1+"&m2="+m2+"&n2="+n2);

  }
</script>

2 个答案:

答案 0 :(得分:0)

将点击事件附加到按钮也可能是一个好主意,因为您没有使用标记上的href属性来重定向..

<button class="btn btn-warning" onclick="save()"> Calcola </button>

答案 1 :(得分:0)

它不起作用的原因是有两种竞争行为。该按钮的默认操作是提交表单,因此如果在单击事件之前处理该表单,您将无法看到该功能的效果。

将事件绑定在按钮上并从事件处理程序返回false将停止按钮的默认操作:

<button class="btn btn-warning" onclick="return save()"><a style="color:white;" class="btn"> Calcola </a></button> ...

... <script type="text/javascript"> 
  function save(){
    var m1 = document.getElementById("m1").value;
    var n1 = document.getElementById("n1").value;

    var m2 = document.getElementById("m2").value;
    var n2 = document.getElementById("n2").value; 

    window.location = ("?clicco=true&m1="+m1+"&n1="+n1+"&m2="+m2+"&n2="+n2);

    return false;
  }
</script>