【问题标题】:foreach object/array in jQueryjQuery中的foreach对象/数组
【发布时间】:2010-11-24 21:29:09
【问题描述】:

我有一个问题,我的代码中有 X <input type="checkbox" />,现在我想 foreach 这个对象/数组它的输出。 - 看看我的代码。

$("#denied_seekrs").click(function()
{ 
    if (!isCheckedById("selectname")) 
    { 
        alert ("Please select at least one event"); 
        return false; 
    } 
    else 
    { 
        alert( $("input[@id=selectname]:checked").val() ); //submit the form 
    } 
}); 

function isCheckedById(id) 
{ 
    var checked = $("input[@id="+id+"]:checked").length; 
    if (checked == 0) 
    { 
        return false; 
    } 
    else 
    { 
        return true; 
    } 
}

当我在警报中输出它时,我得到了一个对象,但是如果我选择了 2 个复选框,那么这 2 个复选框中的值是什么。

我希望我能有所帮助,这里的所有人都理解我:)

【问题讨论】:

  • @NeoNmaN:几乎每个浏览器都有有用的拼写检查器。不要误会我的意思,但我认为你应该安装一个。这个问题真的很难理解。
  • 你必须澄清你的问题。您想从所有复选框中获取值吗?你想用它做什么?当您刚刚提交表单时,就像您在警报旁边的评论中提到的那样,所有复选框值都将发送到服务器。

标签: javascript jquery arrays object


【解决方案1】:

怎么样

$("#denied_seekrs").click(function() {
    var checkedInputs = $("input:checked");
    var test = "";
    $.each(checkedInputs, function(i, val) {
        test += val.value+",";
    });
    test = test.substring(0,(test.length-1));
    alert(test);
});

【讨论】:

  • 为了使其适用于字符串数组,我更改了行:test += val.value+",";测试 += val +",";
【解决方案2】:

我不确定您在寻找什么,但我猜jQuery.each() method 会有所帮助。您可以使用它来迭代数组、对象等。

var arr = [ "one", "two", "three", "four", "five" ];

jQuery.each(arr, function() {
     $("#" + this).text("My id is " + this + ".");
     return (this != "four"); // will stop running to skip "five"
});

【讨论】:

    【解决方案3】:

    这样的事情怎么样:

     jQuery.each(checked, function() {
          $(checked + this).text("My id is " + this + ".");
    
        });
    

    【讨论】:

    • 也许你应该重命名检查到另一个名字
    【解决方案4】:

    难道你最终在寻找$.serializeArray()$.serialize()

    如果没有,那么也许这对你有帮助:

    $("#denied_seekrs").click(function()
    { 
        if (!isCheckedById("selectname")) 
        { 
            alert ("Please select at least one event"); 
            return false; 
        } 
        else 
        { 
            // prepare array of values
            var values = [];
    
            // prepare list of checked checkboxes
            var $checkboxes = $("input[@id=selectname]:checked");
    
            // push each individual value into the array
            $checkboxes.each(function() { values.push( $(this).val() ); });
    
            // debug output
            alert( values.join("\n") ); 
            //submit the form 
        } 
    });
    

    【讨论】:

      【解决方案5】:

      如果我说对了,您希望用户选择一个复选框(或者是一个或多个?)。应该这样做:

      $("#denied_seekrs").click(function()
      { 
      
          var $checkedInputs = $("input:checked"); 
      
          if ($checkedInputs.length != 1) 
          { 
              alert ("Please select one event"); 
              return false; 
          } 
      
          alert( $checkedInputs.val() ); //submit the form 
      }); 
      

      编辑: 再次阅读您的问题后,我意识到上面的代码没有回答您的问题。但是,上述方法确实有效,并且是您解决方案的更短版本。也许您想改用它。要回答您的问题,您可以像这样提醒所有复选框的值:

      改变这个:

          alert( $checkedInputs.val() ); //submit the form 
      

      到这里:

          var values = "";
          $checkedInputs.each(function(){
            values += $(this).val() + " ";
          });
      
          alert( values );
      

      【讨论】:

      • @NeoNmaN:是的,我首先把你的问题弄错了。我刚刚添加了一个示例来获取警报中的所有值。
      猜你喜欢
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2021-01-27
      相关资源
      最近更新 更多