如何使用jquery

时间:2017-09-01 13:12:03

标签: javascript jquery html arrays jquery-selectors

实际上我有一个表单,我在输入框中输入名称,html页面名称并将其保存到数据库中。在这里我遇到了一些问题

  1. 我可以生成输入框但是如何获取该输入框的值?

  2. 如何获取在动态框中输入的输入框的动态值并将其发送到发布请求,因为我知道如何发送多个静态输入框值请求我们如何发送它。

  3. 以下是我的代码

        <div class="input_fields_wrap">
        <button class="add_field_button">Add More Fields</button>
        <div><input type="text" name="mytext[]"></div>
    </div>
    
    
    
     $(document).ready(function() {
        var max_fields      = 10; //maximum input boxes allowed
        var wrapper         = $(".input_fields_wrap"); //Fields wrapper
        var add_button      = $(".add_field_button"); //Add button ID
    
        var x = 1; //initlal text box count
        $(add_button).click(function(e){ //on add input button click
            e.preventDefault();
            if(x < max_fields){ //max input box allowed
                x++; //text box increment
                $(wrapper).append('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
            }
        });
    
        $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
            e.preventDefault(); $(this).parent('div').remove(); x--;
        })
    });
    

    我上面我可以生成动态输入框并可以删除它但无法获取值因此如何通过使用id生成并将所有动态生成的值发布到数据库

3 个答案:

答案 0 :(得分:4)

你可以像这样使用jquery #map()函数:

var list = wrapper.find('input').map(function() {
  return $(this).val();
}).get();

当您想提交列表的值发送到服务器时 - 请参阅下面的演示:

$(document).ready(function() {
  var max_fields = 10; //maximum input boxes allowed
  var wrapper = $(".input_fields_wrap"); //Fields wrapper
  var add_button = $(".add_field_button"); //Add button ID

  var x = 1; //initlal text box count
  $(add_button).click(function(e) { //on add input button click
    e.preventDefault();
    if (x < max_fields) { //max input box allowed
      x++; //text box increment
      $(wrapper).append('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
    }
  });

  $(wrapper).on("click", ".remove_field", function(e) { //user click on remove text
    e.preventDefault();
    $(this).parent('div').remove();
    x--;
  });

  /* ADDED THIS */
  $('.submit').click(function() {
    var list = wrapper.find('input').map(function() {
      return $(this).val();
    }).get();
    // send to server here
    console.log(list);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input_fields_wrap">
  <button class="add_field_button">Add More Fields</button>
  <div><input type="text" name="mytext[]"></div>
</div>
<button class="submit">Submit</button>

答案 1 :(得分:2)

是的,可以尝试这样的事情

var inputField = $('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>');
$(wrapper).append(inputField);

然后您可以将事件附加到该变量。

inputField.on('change', 'input', function() {
    var value = $(this).val();
    console.log(value);
});

希望这可以帮助你:)

答案 2 :(得分:1)

另一种方法是,在表单中添加以下按钮:

<button class="getValue">Get Field Values</button>

在加载时在JS中添加以下按钮单击事件:

$(getValue).click(function (e) {
   e.preventDefault();
   let fieldValues = "";
   $("input").each(function(i,e){
     fieldValues = fieldValues == "" ? $(e).val() : fieldValues + ", " + $(e).val();
   })
   alert(fieldValues);
});