【问题标题】:Add input forms dinamically trough AJAX and JQUERY通过 AJAX 和 JQUERY 动态添加输入表单
【发布时间】:2018-05-17 17:26:07
【问题描述】:

我现在遇到的问题是,我现在要附加的内容也只是在主 JavaScript 文件中创建它。

有没有一种方法可以将此内容放入其他 HTML 文件中,然后在 JavaScript 文件中使用 AJAX 调用它,并可能在循环中附加此内容以附加从选择输入标签中选择的次数?

这里是选择输入代码:

<label for="beneficiarios">Cantidad de beneficiarios</label>
<select name="beneficiarios" id="beneficiarios">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
</select>

这是我要附加的内容:

<div class="row beneficiario-info">
  <div class="col-md-6">
    <div class="form-group w-75">
      <label for="bene-nombreyapellido">Nombre y Apellido</label>
      <input type="text" name="bene-nombreyapellido" id="bene-nombreyapellido" class="form-control">
    </div>
    <!-- form group -->
    <div class="form-group w-75">
      <label for="bene-ci-numero">Cedula de identidad</label>
      <div class="input-group">
        <div class="input-group-prepend">
          <select name="bene-ci-tipo" id="bene-ci-tipo" class="custom-select">
            <option value="VE">V</option>
            <option value="EX">E</option>
          </select>
        </div>
        <!-- cedula tipo prepend -->
        <input type="text" name="bene-ci-numero" id="bene-ci-numero" class="form-control" maxlength="8">
      </div>
      <!-- input group -->
    </div>
    <!-- form group -->
  </div>
  <!-- col -->
  <div class="col-md-6">
    <div class="form-group w-75">
      <label for="parentezco">Parentezco</label>
      <select name="parentezco" id="parentezco" class="custom-select">
        <option value="">---------</option>
        <option value="hijo">Hijo</option>
        <option value="padre">Padre</option>
        <option value="hermano">Hermano o Hermana</option>
        <option value="conyugue">Conyugue</option>
      </select>
    </div>
    <div class="form-group">
      <label for="servicioadicional">Servicios Adicionales</label>
      <select name="servicios_beneficiario" class="custom-select" id="servicios_beneficiario" multiple="multiple">
        <option value="medico">Médico</option>
        <option value="odontologico">Odontológico</option>
        <option value="funerario">Funerario</option>
        <option value="vial">Víal</option>
      </select>
    </div>
  </div>
  <!-- col -->
</div>
<!-- row beneficiario -->

这是 JavaScript 代码:

var number = 0;

$('#ctd-beneficiarios').on('change', function() {
  numero = $(this).val();
  beneficiarios_wrapper.html('');

  for (var i = 0; i < numero; i++) {

  }
}); 

beneficiarios_wrapper 是我要将内容附加到的 div。

【问题讨论】:

  • 你可以这样做,stackoverflow.com/questions/4818854/… 但是额外的往返服务器以获得更多的 html,如果多次用于不同的模板将是非常糟糕的。我的建议是在你的 html 中创建一个“隐藏”模板并克隆它,附加它,然后显示它。

标签: javascript jquery ajax


【解决方案1】:

与其将其存储在单独的文件中并通过 AJAX 检索它,不如使用 像这样的隐藏模板:

$main = $('#main');
for(var i=0;i<5;i++){
  var $template = $('.template').clone();
  $template.removeClass('template');
  $template.find('.mainText').text("Template "+i);
  $main.append($template);
  $template.show();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
  <div class="template" style="display:none;">
    <span class ="mainText"></span>
  </div>
</div>

或者,正如 J. Titus 所建议的那样:

$main = $('#main');
for(var i=0;i<5;i++){
  var template = document.getElementById('template').innerHTML;
  var $template = $(template)
  $template.find('.mainText').text('Template '+i)
  $main.append($template);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script id="template" type="text/template">
    <div>
      <div class="test">
      <span class="mainText">test</span>
      </div>
    </div>
</script>
<div id="main">
</div>

【讨论】:

  • 将模板代码放入&lt;script type="text/template"&gt;...&lt;/script&gt; 将删除使用display:none 的要求。
  • 谢谢,这对我有很大帮助.. 但是我在模板脚本中的一些内容有问题.. 我正在使用 jQuery 插件来影响里面的一些内容(使用多选插件)..我现在正确地附加了内容,但不知何故插件不再影响内容..我的头会严重爆炸
  • 我在我的 HTML 上调用插件脚本后添加脚本,并且我的所有 JS 代码也在 $(document).ready 函数中。我正在调用我的追加内容后的多选功能所以...我不知道是什么问题
  • .multiSelect('refresh')?
  • 哦,我明白了。因此,如果您手动将元素放入然后调用multiselect 它可以工作,但是如果您追加然后调用它不会?您的 multiselect 电话就在附加之后,对吗?不在单独的 document.ready 回调中?
猜你喜欢
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多