javascript - 复选框 - 仅在选中 jquery 时运行

标签 javascript jquery

我一直在查看很多关于如何完成此操作的示例,但无法使其正常工作。我只想在我的 javascript 中放置一个简单的 if 语句,当我添加 if 时,它会中断吗?我正在接受测试以在选中时报告 true,在未选中时报告 false,所以我错过了什么? - 新手用户,如果这是一种复杂的方式,我深表歉意。

不工作:

<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>

最佳答案

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 />

脚本:

    $('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);  
      }
  });
     }       
 });

注意:

如果其中一个操作数是 bool 值,则 bool 操作数如果为真则转换为 1,如果为假则转换为 +0。

你可以添加console.log(test);来查看test的值。

您所做的是将 true == "true" booleanstring 进行比较

阅读Using the Equality Operators

关于javascript - 复选框 - 仅在选中 jquery 时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691362/

相关文章:

javascript - Vue.JS 嵌套 v-for 抛出 null/未定义错误

javascript - 使用 Express 和 EJS 在 Node.js 中重新加载页面

php - 导航位置固定在滚动 wordpress 上

javascript - 无法捕获 div 元素内的坐标

javascript - 是否可以使用 Web 开发工具并创建一个实际工作的 WYSIWYM 数学编辑器,如 MathType 等桌面应用程序?

jquery - 使用 REST API 获取 SharePoint 列表的不同数据

javascript - 如何从ajax响应中解码url?

javascript - 使用 PHP 和 Javascript 创建翻转

javascript - 在Javascript中从其他框架访问框架的元素

javascript - 在 MVC 4 部署的项目中出现 404 错误