Jquery单选按钮提交多次重复相同的值

时间:2013-12-23 10:38:45

标签: javascript php jquery mysql

我在创建报告系统时遇到问题。计划是这样的:用户有4个无线电可供选择,然后提交其中一个。第一次提交只在mysql中插入一行,但每次提交后都会插入越来越多的行。这是代码:

profile.php

<form id="myform">
  bully<input type="radio" id='radio<?php echo $outid; ?>' name="nein" class='radspam' value="bulinput"> </input><br>
  spam<input type="radio" id='radio<?php echo $outid; ?>'  name="nein" class='radspam' value="spaminput"> </input><br>
  viol<input type="radio" id='radio<?php echo $outid; ?>'   name="nein" class='radspam' value="vioinput"> </input><br>
  pron<input type="radio" id='radio<?php echo $outid; ?>'  name="nein" class='radspam' value="pcont_input"> </input>        
</form>

///jquery code
$(".report").click(function(){
  var parent=$(this).parent().attr("id");
  var split=parent.split("output");
  var id=split[1];
  loading();
  closeloading(); // fadeout loading

  $(".torep").fadeIn("fast"); // fadein popup div
  $("#backgroundPopup").css("opacity", "0.7"); // css opacity, supports IE7, IE8
  $("#backgroundPopup").fadeIn("fast");

  $("input:radio[name=nein]").click(function() {
    $(".repyes").removeAttr("disabled");
  }); 

  $(".repyes").click(function(){
    var username="<?php echo $username; ?>";
    var valara = $('input:radio[name=nein]:checked').val();

    $.ajax({
      url:"s/report.php",
      data:"username=" + username + "&what=" + valara + "&whatid=" + id,
      type:"POST",
      success:function(data){
        alert(data);
        $(this).prop('checked', false);
      }
    });

  });

});

report.php

<?php
  include "db.php";

  IF (isset($_POST['whatid'])){
    $what=$_POST['what'];
    $reported=$_POST['username'];
    $whatid=$_POST['whatid'];

    $sql=mysql_query("INSERT INTO report(reported,what,whatid,date) VALUES ('$reported','$what','$whatid',now())");

    if (mysql_affected_rows() == 1){
      echo "udje";
    }else{
      echo mysql_error();
    }
  }
?>

2 个答案:

答案 0 :(得分:1)

id移至全局范围。并将click事件分配给.repyes之外的$(".report").click()

var _id = null;
$(".report").click(function(){
  var parent=$(this).parent().attr("id");
  var split=parent.split("output");
  _id = split[1];
  loading();
  closeloading(); // fadeout loading

  $(".torep").fadeIn("fast"); // fadein popup div
  $("#backgroundPopup").css("opacity", "0.7"); // css opacity, supports IE7, IE8
  $("#backgroundPopup").fadeIn("fast");
  $(".report").click(function() {
    $("input:radio[name=nein]").click(function() {
      $(".repyes").removeAttr("disabled");
    }); 
  });
});
$(".repyes").click(function(){
    var username="<?php echo $username; ?>";
    var valara = $('input:radio[name=nein]:checked').val();

    $.ajax({
      url:"s/report.php",
      data:"username=" + username + "&what=" + valara + "&whatid=" + _id,
      type:"POST",
      success:function(data){
        alert(data);
        $(this).prop('checked', false);
      }
    });
});

答案 1 :(得分:0)

最有可能的原因是你在事件处理程序中有一个事件处理程序绑定。因此,每次单击报告时,新的单击事件都绑定到.repeyes

$(".report").click(function(){
    ...
    $(".repyes").click(function(){

将第二个绑定移到第一个绑定之外。

<强>更新

哦,id问题应该像在Arthur Halma'S answer中一样通过将其移动到全局范围来修复。