我正在做一个包含用户必须填写的简单表单的项目,然后是一个提交它的按钮。 第一次单击按钮时,事件(由.click()调用)正确发生,但第二次事件发生两次,依此类推..如果我提交了100次表单,它将播放事件100次
function MenuOpinion(){
$("#registraropinion").click(IngresarOpinion);
}
function IngresarOpinion(){
var seleccionada= $("#perpelicula option:selected").html();
if(seleccionada=="Seleccione"){
$("#error_opinion").html("Seleccione una película de la lista");
}else{
$("#error_opinion").html("");
var nuevaOpinion=[];
nuevaOpinion['nombre']=$("#pernombre").val();
nuevaOpinion['edad']=$("#peredad").val();
nuevaOpinion['opinion']=$("#peropinion").val();
nuevaOpinion['puntaje']= parseInt($("#puntaje option:selected").html());
nuevaOpinion['aclaracion']=$("#txtaclaracion").val();
for(var i=0; i<listaPeliculas.length; i++){
if(listaPeliculas[i]['titulo']==seleccionada){
listaPeliculas[i]['opiniones'].push(nuevaOpinion);
}
}
/*Aviso al usuario y vuelvo al inicio*/
alert("Opinión guardada");
$("#opinion").hide();
$("#inicio").show();
}
}
我真的找不到问题。我留下了与此按钮有关的代码。
答案 0 :(得分:1)
更改
function MenuOpinion(){
$("#registraropinion").click(IngresarOpinion);
}
到
$(function(){ // <-- on document ready
$("#registraropinion").click(IngresarOpinion); // <-- bind the click event once on dom ready
}}
我的猜测是你在每次提交时运行MenuOpinion() - 导致它将另一个点击处理程序绑定到你的元素 - 所以第100次点击将触发绑定到你的元素的所有100个点击事件处理程序
如果您使用的是表单和提交按钮,那么您应该使用
$(function(){ //<-- on document ready
$(yourform).submit(IngresarOpinion); // <-- bind the click event
}}
然后在函数
中有一个e.preventDefaultfunction IngresarOpinion(e){
e.preventDefault();
// rest of your code
}