2014-09-05 59 views
1

我一直在寻找很多关于如何实现这个功能的例子,但是无法使它运行起来。我只是想在我的javascript中添加一个简单的if语句,并且当我添加if时,它会打破?我得到测试报告时检查真正的,没有选中时为false,所以我错过了什么? - 新手用户,所以如果这是一个复杂的方式来做到这一点,我很抱歉。复选框 - 只有在选中时才能运行jquery

不工作:

<script> 
$('input[name="1"]').click(function() { 
    var test = $(this).prop('checked'); //{ 
    if(test == "true") 
    { 
     var alert_id = $(this).val(); 
     var key = $('#key').val(); 
     $.ajax({ 
     type: "POST", 
     url: "functions/database_write.php", 
     data: "id1="+alert_id+"&key="+key+"&test="+test, 
     success: function(resp){ 
      $(".pop-div").slideDown(100,"linear"); 
      setTimeout(function(){ 
      $(".pop-div").slideUp(100,"linear"); 
      }, 1000); 
      //alert(resp); 
     }, 
     error: function(e){ 
     alert('Error: ' + e); 
     } 
    }  
    }) 
}); 
</script> 

但工作,但每当功能是这样写点击:

<script> 
$('input[name="1"]').click(function() { 
    var test = $(this).prop('checked'); //{ 
    //if(test == "true") 
    //{ 
     var alert_id = $(this).val(); 
     var key = $('#key').val(); 
     $.ajax({ 
     type: "POST", 
     url: "functions/database_write.php", 
     data: "id1="+alert_id+"&key="+key+"&test="+test, 
     success: function(resp){ 
      $(".pop-div").slideDown(100,"linear"); 
      setTimeout(function(){ 
      $(".pop-div").slideUp(100,"linear"); 
      }, 1000); 
      //alert(resp); 
     }, 
     error: function(e){ 
     alert('Error: ' + e); 
     } 
    //}  
    }) 
}); 
</script> 
+1

你是什么意思它打破?你看到什么样的输出,如果有的话? – dave 2014-09-05 17:55:45

回答

2

DEMO:

更改if(test == "true")if(test)if(test === true)if(this.checked)

HTML:

<label for=input>Click Me</label> 
<input id=input type=checkbox name=1 /> 

SCRIPT:

$('input[name="1"]').click(function() { 
     var test = $(this).prop('checked'); 
     if(test){ 
      alert("checkbox checked"); 
      var alert_id = $(this).val(); 
      var key = $('#key').val(); 
     $.ajax({ 
     type: "POST", 
     url: "functions/database_write.php", 
     data: "id1="+alert_id+"&key="+key+"&test="+test, 
     success: function(resp){ 
      $(".pop-div").slideDown(100,"linear"); 
      setTimeout(function(){ 
      $(".pop-div").slideUp(100,"linear"); 
      }, 1000); 
     }, 
     error: function(e){ 
     alert('Error: ' + e); 
     } 
    }); 
    }  
}); 

注:

If one of the operands is Boolean, the Boolean operand is converted to 1 if it is true and +0 if it is false.

您可以添加console.log(test);以查看测试的值。

什么,你这样做是比较true == "true"一个booleanstring

Using the Equality Operators

0

尝试这样做:

<script> 

    $('input[name="1"]').click(function() { 
     //var test = $(this).prop('checked'); //{ 
     if(jQuery(this).is(":checked")) 
     { 
      var alert_id = $(this).val(); 
      var key = $('#key').val(); 
      $.ajax({ 
      type: "POST", 
      url: "functions/database_write.php", 
      data: "id1="+alert_id+"&key="+key+"&test="+test, 
      success: function(resp){ 
       $(".pop-div").slideDown(100,"linear"); 
       setTimeout(function(){ 
       $(".pop-div").slideUp(100,"linear"); 
       }, 1000); 
       //alert(resp); 
      }, 
      error: function(e){ 
      alert('Error: ' + e); 
      } 
     }  
     }) 
    }); 
    </script> 
1

关键的问题是在这里,您使用true作为字符串这就是为什么它不工作:

因此,将它用作布尔值:

if(test == true) // not "true" 

您也可以使用如下:

if(test) // it says if test is true 

OR,

if(test == 1) // 1 for true 0 for false 
0

试试这样说:

<script> 
$('input[name="1"]').click(function() { 
    var test = $(this).prop('checked'); //{ 

     console.log(test);// to see whats is in test 

    if(test) 
    { 
     var alert_id = $(this).val(); 
     var key = $('#key').val(); 
     $.ajax({ 
     type: "POST", 
     url: "functions/database_write.php", 
     data: "id1="+alert_id+"&key="+key+"&test="+test, 
     success: function(resp){ 
      $(".pop-div").slideDown(100,"linear"); 
      setTimeout(function(){ 
      $(".pop-div").slideUp(100,"linear"); 
      }, 1000); 
      //alert(resp); 
     }, 
     error: function(e){ 
     alert('Error: ' + e); 
     } 
    }  
    }) 
}); 
</script> 
相关问题