在ejs模板中同步输入元素

时间:2017-08-05 15:22:01

标签: javascript html ejs

我有一个用数组(称为" operaciones")呈现的ejs模板,是sql请求的结果。

我需要实现当用户选择一个寄存器(" unidad de obra")时,其他输入显示字段" unidad de medida"和" precio unitario"。

这是我的代码:

<div class="col-md-6">
    <label for="via">Unidad de obra:</label>
    <select class="form-control" id="operacion" name="operacion" value="<%= medicion.idope %>" id="medicion">
    <% for(var i=0; i < operaciones.length; i++) { %>
        <option value=<%= operaciones[i].gid %>><%= operaciones[i].codigo %>-<%= operaciones[i].descr %></option>
    <% }%>
   </select>
</div>
<div class="col-md-3">
   <label>Unidad de medida:</label>
   <input type="text" class="form-control" id="unidad" name="unidad" value="" disabled/>
</div>
<div class="col-md-3">
   <label>Precio unitario (€):</label>
   <input type="text" class="form-control" id="preciou" name="preciou" value="" disabled/>
</div>

先谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将这些值输出到选项的 data 属性中。然后添加一些jquery来处理选择并更新值。 (我用对象文字替换了ejs,使其在一个代码片段中工作):

&#13;
&#13;
//serverside

var operaciones = [
{gid:1,codigo:2,descr:2,unidad:3,preciou:4},
{gid:5,codigo:6,descr:2,unidad:7,preciou:8},

];

var c = `
<div class="col-md-6">
    <label for="via">Unidad de obra:</label>
    <select class="form-control" id="operacion" name="operacion">`; 
    
    for(var i=0; i < operaciones.length; i++) {
      c+=`
       <option 
         value="${ operaciones[i].gid}"
         data-unidad="${ operaciones[i].unidad}"
         data-preciou="${ operaciones[i].preciou}"
         
       >
          ${operaciones[i].codigo}-${ operaciones[i].descr}
       </option>`;
    }

c += `
   </select>
</div>
<div class="col-md-3">
   <label>Unidad de medida:</label>
   <input type="text" class="form-control" id="unidad" name="unidad" value="1" disabled/>
</div>
<div class="col-md-3">
   <label>Precio unitario (€):</label>
   <input type="text" class="form-control" id="preciou" name="preciou" value="2" disabled/>
</div>`;

document.body.innerHTML = c;

//userside

$(function(){
$("#operacion").on("change",function(){
  
  var selected = $(this).children("option:selected");
  $("#unidad").val(selected.data("unidad"));
  $("#preciou").val(selected.data("preciou"));
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;