克隆表单使用jQuery添加和删除元素条件

时间:2016-03-11 04:10:25

标签: javascript php jquery forms dynamic

所以,我想克隆我的选择选项表单,当它已经符合标准时(例如在这种情况下用户选择'THEN'运算符),表单将显示一个固定的内容(风险 - 高),隐藏特定链接(添加更多)并显示提交按钮。

令我感到不安的是,我的代码仅在我选择运算符时才适用于第一种形式。我想要的是,我希望它能在每个最后添加的表格上执行。

例如,我需要一个这样的输出:

  

如果年龄老了且ldl很高且hdl很低而且sistolic很高那么   风险很高

这是我的代码:

@SuppressWarnings("empty-statement")
public static byte[] inputStreamToByte(InputStream is) throws IOException {
    if (is == null) {
        return null;
    }
    // Define a size if you have an idea of it.
    ByteArrayOutputStream r = new ByteArrayOutputStream(2048);
    byte[] read = new byte[512]; // Your buffer size.
    for (int i; -1 != (i = is.read(read)); r.write(read, 0, i));
    is.close();
    return r.toByteArray();
}
function rule(id_counter) {
  if (id_counter != 0) {
    var abc = $('#var_name' + id_counter).val();
  } else {
    var abc = $('#var_name').val();
  }

  $.ajax({
    url: 'search_coll.php',
    type: 'post',
    data: {
      selected_item: abc
    },
    success: function(response) {
      if (id_counter != 0) {
        $('#var_name' + id_counter).html(response);
      } else {
        $('#var_name').html(response);
      }
    },
    error: function() {
      console.log('Request failed.')
    }
  });
};
$(document).ready(function() {
  var count = 1;
  $('#clone').click(function() {
    var ab = $('#tobecloned').clone();
    ab.find('select').attr('id', function(i, val) {
      return val + count;
    });
    ab.find('.js_variable').attr('onChange', function(i, val) {
      return "rule("+ count +")";
    });

    $('#tab').append(ab);
    count++;
  });
});

之前谢谢

1 个答案:

答案 0 :(得分:0)

这里有一些不妥之处。

所有选项都没有ID,因此尝试更新它们的循环会将它们设置为NaN

但是,您在集合上使用.attr('id'),它只返回第一个ID,而不是全部。

要依次对每个元素进行操作,请使用.each(),如下所示:

ab.find('select').each(function() {
  var el = $(this)
  el.attr('id', el.attr('id') + count)
});

为了在更改选择值时采取措施,您需要为其分配一个带有.change()的更改处理程序,类似于

$('#operator').change(function() {
  operatorSelect($(this))
})

在克隆它们时,您必须为每个选择单独分配更改处理程序,并且您可能希望禁用每个先前的运算符选择,以便不会更改哪个更改。

我发现这是一个有趣的小转移,所以我把一个快速的小提琴演示:https://jsfiddle.net/xosqw00p/