【问题标题】:jQuery get form data for only visible fieldsjQuery仅获取可见字段的表单数据
【发布时间】:2017-06-15 12:51:16
【问题描述】:

在我的 form 中,我得到了可见和不可见 (display:none) 元素。我只需要获取可见字段的表单数据。我正在使用以下代码收集数据:

var formData = $('#myForm')
               .serializeArray()
               .reduce(function(obj, item) {   
                    //need to process only visible fields somewhere here                     
                    obj[item.name] = item.value;
                    return obj;
                }, {});

我知道禁用输入的name 属性,但是在收集数据后,我想为所有字段返回此属性。任何想法都会受到欢迎。谢谢。

【问题讨论】:

  • 我不确定,你可以试试$('#myForm :visible')
  • $("#myForm :visible").each(function(){ console.log(this); });
  • 成功了,把它作为答案,谢谢

标签: javascript jquery


【解决方案1】:
$("#myForm :visible").each(function(){
  console.log(this);
}); 

【讨论】:

    【解决方案2】:

    使用:visible selector过滤隐藏元素:

    function showValues() {
        var fields = $("form :input:visible").serializeArray();
        $("#results").empty();
        $.each(fields, function( i, field ) {
          $("#results").append( field.value + " " );
        });
      }
     
      $(":checkbox, :radio").click(showValues);
      $(":text").blur(showValues);
      $( "select" ).change(showValues);
      
      showValues();
      body, select {
        font-size: 14px;
      }
      form {
        margin: 5px;
      }
      p {
        color: red;
        margin: 5px;
      }
      b {
        color: blue;
      }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p><b>Results:</b> <span id="results"></span></p>
    <form>
      <input type="text" name="text1" value="text1" id="text1"/>
      <input type="text" name="text2" value="text2" id="text2" style="display:none;"/>
      <select name="single">
        <option>Single</option>
        <option>Single2</option>
      </select>
      <select name="multiple" multiple="multiple">
        <option selected="selected">Multiple</option>
        <option>Multiple2</option>
        <option selected="selected">Multiple3</option>
      </select>
      <br>
      <input type="checkbox" name="check" value="check1" id="ch1" />
      <label for="ch1">check1</label>
      <input type="checkbox" name="check" value="check2" checked="checked" id="ch2" />
      <label for="ch2">check2</label>
      <input type="radio" name="radio" value="radio1" checked="checked" id="r1">
      <label for="r1">radio1</label>
      <input type="radio" name="radio" value="radio2" id="r2">
      <label for="r2">radio2</label>
    </form>

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 2011-09-22
      • 2011-12-08
      • 2013-07-19
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      相关资源
      最近更新 更多