如何在更改其他日期类型字段时修改日期类型字段

时间:2014-11-12 22:12:47

标签: javascript jquery symfony twig

我有两个输入类型日期字段,当更改第一个时,我需要添加14个工作日来设置第二个。我怎么能这样做?

以下是所有代码:

{% extends 'daciproveedorBundle::main.html.twig'%}
{% form_theme form 'dacicontratosBundle:Form:my_form_theme.html.twig' %}
{% block title %}{{ parent() }} - Edición de Contratos{% endblock %}

{% block css1st %}
<link rel="stylesheet" href="{{ asset('bootstrap/css/custom-bootstrap-header.css') }}" >
<link rel="stylesheet" href="{{ asset('bootstrap/css/custom-bootstrap-collapse.css') }}" >

<link rel="stylesheet" href="{{ asset('bootstrap/css/custom-bootstrap-grid_and_table.css') }}" >

<link rel="stylesheet" href="{{ asset('bootstrap/css/custom-bootstrap-tabs.css') }}" >

{% endblock css1st %}

{% block css2nd %}
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<link href="{{ asset('bundles/genemuform/select2-3.5.0/select2.css') }}" rel="stylesheet"/>
<script src="{{ asset('bundles/genemuform/select2-3.5.0/select2.js') }}"></script>

{{ form_javascript(form) }}
{% endblock css2nd %}

{% block javascripts %}
    <script type="text/javascript" src="{{ asset('bundles/dacicontratos/js/jquery-2.0.3.js') }}"></script>
    <!-- <script type="text/javascript" src="{{ asset('bundles/dacicontratos/js/set_form_seguimiento.js') }}"></script> -->
    <!-- <script type="text/javascript" src="{{ asset('bundles/dacicontratos/js/set_form_garantia.js') }}"></script> -->
    <script type="text/javascript" src="{{ asset('bundles/dacicontratos/js/set_form_contratos_completo.js') }}"></script>


    <!-- jquery ui -->
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>




{% endblock %}




{% block page_content %}

{{ form_start(form) }}


<ul id="myTab" class="nav nav-tabs" role="tablist">
  <li {{ tab_selector|default('evaluacion') in ['evaluacion'] ? 'class="active"' : '' }} style="padding: 0px;"><a href="#evaluacion" role="tab" data-toggle="tab">Evaluación</a></li>
  <li {{ tab_selector|default('seguimiento') in ['seguimiento'] ? 'class="active"' : '' }} style="padding: 0px;"><a href="#seguimiento" role="tab" data-toggle="tab">Seguimientos</a></li>
  <li {{ tab_selector|default('garantia') in ['garantia'] ? 'class="active"' : '' }} style="padding: 0px;"><a href="#garantia" role="tab" data-toggle="tab">Garantías y Pólizas</a></li>
  <li {{ tab_selector|default('visita') in ['visita'] ? 'class="active"' : '' }} style="padding: 0px;"><a href="#visita" role="tab" data-toggle="tab">Visitas de Campo</a></li>
</ul>

<div id="myTabContent" class="tab-content">
    <div class="tab-pane fade {{ tab_selector|default('evaluacion') in ['evaluacion'] ? 'in active' : '' }}" id="evaluacion">

        <br/><br/>
        <h2 style="font-family: 'Oswald', sans-serif; font-weight: 300;">Contratos</h2>
        <br/><br/>
        <ul>
        <li>{{ form_row(form.proveedor) }}</li>
        <li>{{ form_label(form.codigo_referencia, 'Código referencia') }}{{ form_widget(form.codigo_referencia) }}</li>
        <li>{{ form_row(form.nombre) }}</li>
        <li>{{ form_label(form.contratoTipo, 'Tipo') }}{{ form_widget(form.contratoTipo) }}</li>
        <li>{{ form_row(form.fecha_inicio) }}</li>
        <li>{{ form_row(form.fecha_fin) }}</li>
        <li>{{ form_row(form.monto) }}</li>

        <li><p class="subtitle">Unidades</p></li>
        <div class="panel-group" id="accordion">
            {% set counter = 0 %}
            {% for array_unidad in unidades %}
                {% set counter = counter + 1 %}
                {% set unidad_nombre = "unidad_nombre" ~ counter %}
                {% set unidad_id = array_unidad.id %}
                <div class="panel panel-default">
                    <div class="panel-heading" data-toggle="collapse" {# data-parent="#accordion" #} href="#{{ unidad_nombre }}">
                        <h4 class="panel-title">
                            {{ array_unidad.nombre }}
                        </h4>
                    </div>
                    <div id="{{ unidad_nombre }}" class="panel-collapse collapse in">
                        <div class="panel-body">
                            <ul class="wide_label">
                            {% for array_contacto in array_unidad.contactos %}
                                {% for contacto in form.contactos %}
                                    {% if contacto.vars.value == array_contacto.id %}
                                            <li>
                                                {{ form_widget(contacto) }} 
                                                {{ form_label(contacto) }}
                                                {{ form_errors(contacto) }}
                                            </li>
                                    {% endif %}
                                {% endfor %}
                            {% endfor %}
                            </ul>
                        </div>
                    </div>
                </div> 
            {% endfor %}
        </div>

        <li><p class="subtitle">Sets de Preguntas</p></li>
            {% set contador = 1 %}
            {% set count = 0 %}
            {% set cerrar_div = 'si' %}
            {% for conjunto in form.conjuntos %}

            {% if contador == 1 and count == 0 %}
            <div class="row bg-custom-default">
            {% set count = 1 %}
            {% else %}
                {% if contador == 1 and count == 1 %}
                <div class="row bg-custom-white">
                {% set count = 0 %}
                {% endif %}
            {% endif %}

                <div class="col-md-3">
                    {{ form_widget(conjunto) }} {{ form_label(conjunto) }}
                </div>

            {% if contador == 3 %}
            </div> <!-- <br/><br/> -->
            {% set contador = 1 %}
            {% set cerrar_div = 'no' %}
            {% else %}
            {% set contador = contador + 1 %}
            {% set cerrar_div = 'si' %}
            {% endif %}



            {% endfor %}

            {% if cerrar_div == 'si' %}
            </div> <!-- <br/><br/> -->
            {% endif %}
        <br/>
        <br/>
        <li>{{ form_row(form.archivo) }}</li>
            {% if file_url is defined and file_url != "" %}
        <div id="file_attached">
                <li>{{ asset(file_url) }} - <a href="{{ asset(file_url) }}">Descargar <br/><img src="{{ asset('images/attachment.png')}}"></a></li>
        </div>
            {% endif %}
        </ul>

      </div>

    <div class="tab-pane fade {{ tab_selector|default('seguimiento') in ['seguimiento'] ? 'in active' : '' }}" id="seguimiento">
        <br/><br/>
        <h2 style="font-family: 'Oswald', sans-serif; font-weight: 300;">Registro</h2>
        <br/><br/>
        <table style="width: 750px; text-align: justify; border-collapse:separate; border-spacing:1em;">
            <tr>
                <td>{{ form_label(form.proveedor, 'Proveedor') }}</td>
                <td>
                    {% set label = '' %}
                    {% for choice in form.proveedor.vars.choices %}
                        {% if choice.value == form.proveedor.vars.value %}
                            {% set label = choice.label %}
                        {% endif %}
                    {% endfor %}

                    {{ label }}
                </td>
            </tr>
            <tr>
                <td>{{ form_label(form.nombre, 'Nombre contrato') }}</td>
                <td>{{ form.nombre.vars.value }}</td>
            </tr>
        </table>
        <!-- <hr/> -->
        <ul>
            <li><ul class="seguimientos" data-prototype="{{ form_widget(form.seguimientos.vars.prototype)|e }}">
                {% for pregunta in form.seguimientos %}
                <li>
                    {{ form_row(pregunta.titulo) }}
                    {# <!-- {{ form_row(pregunta.seguimientoTipo) }} --> #}
                    {{ form_row(pregunta.fecha_entrega) }}
                    {# <!-- {{ form_row(pregunta.fecha_prorroga) }} --> #}
                    {{ form_row(pregunta.descripcion) }}
                    {{ form_row(pregunta.loQueSeEspera) }}
                    {{ form_row(pregunta.isRecibido) }}
                    {{ form_row(pregunta.contactos) }}
                    {{ form_row(pregunta.comentarios) }}
                    {{ form_row(pregunta.archivo) }}

                    {% if pregunta.archivo.vars.value.name is defined %}
                        {% if pregunta.archivo.vars.value.name is not null %}
                            <label style="padding-bottom: 40px;">Descargar Archivo: </label> <a href="{{ asset( pregunta.archivo.vars.value.webpath ) }}">{{ pregunta.archivo.vars.value.name }}</a>
                        {% else %}
                            <label style="padding-bottom: 40px;">Descargar Archivo: </label> <a href="{{ asset( pregunta.archivo.vars.value.webpath ) }}">Clic Aquí</a> 
                        {% endif %}
                    {% endif %}

                    {{ form_row(pregunta.cumplimientoNoCumplimiento) }}

                </li>
                {% endfor %}
                </ul>
            </li>
        </ul>
    </div>

    <div class="tab-pane fade {{ tab_selector|default('garantia') in ['garantia'] ? 'in active' : '' }}" id="garantia">
        <br/><br/>
        <h2 style="font-family: 'Oswald', sans-serif; font-weight: 300;">Registro</h2>
        <br/><br/>
        <table style="width: 750px; text-align: justify; border-collapse:separate; border-spacing:1em;">
            <tr>
                <td>{{ form_label(form.proveedor, 'Proveedor') }}</td>
                <td>
                    {% set label = '' %}
                    {% for choice in form.proveedor.vars.choices %}
                        {% if choice.value == form.proveedor.vars.value %}
                            {% set label = choice.label %}
                        {% endif %}
                    {% endfor %}

                    {{ label }}
                </td>
            </tr>
            <tr>
                <td>{{ form_label(form.nombre, 'Nombre contrato') }}</td>
                <td>{{ form.nombre.vars.value }}</td>
            </tr>
        </table>
        <ul>
            <li><ul class="garantias" data-prototype="{{ form_widget(form.garantias.vars.prototype)|e }}">
                {% set cuenta = 0 %}
                {% for garantia in form.garantias %}
                <li>

                    {{ form_row(garantia.garantiaTipo) }}
                    {{ form_row(garantia.fecha_emision) }}
                    {{ form_row(garantia.fecha_vencimiento) }}
                    {{ form_row(garantia.fecha_recibido_daci) }}
                    {{ form_row(garantia.fecha_entrega) }}              {# fecha entrega al proveedor #}                


                    {{ form_row(garantia.empresa_emite_garantia) }}
                    {{ form_row(garantia.tiempo_de_garantia) }}
                    {{ form_row(garantia.estado) }}
                    {{ form_row(garantia.isRecibido) }}
                    {{ form_row(garantia.porcentaje) }}
                    {{ form_row(garantia.monto) }}
                    {{ form_row(garantia.comentarios) }}
                    {{ form_row(garantia.archivo) }}

                    {% if garantia.archivo.vars.value.name is defined %}
                        {% if garantia.archivo.vars.value.name is not null %}
                            <label style="padding-bottom: 40px;">Descargar Archivo: </label> <a href="{{ asset( garantia.archivo.vars.value.webpath ) }}">{{ garantia.archivo.vars.value.name }}</a>
                        {% else %}
                            <label style="padding-bottom: 40px;">Descargar Archivo: </label> <a href="{{ asset( garantia.archivo.vars.value.webpath ) }}">Clic Aquí</a> 
                        {% endif %}
                    {% endif %}

                </li>
                    {% set cuenta = cuenta + 1 %}
                {% endfor %}
                <script>
                (function($) {
                        $(document).ready(function(){
                            //alert("hola");


                            /*
                            var $second = jQuery('#contratos_garantias_0_fecha_entrega').datepicker({
                                dateFormat: 'yy-mm-dd'
                            });*/


                            var prefix = 'myClass';
                            var $inputs = $('.' + prefix);


                            $inputs.each(function (k, v) {

                                if (k % 2 === 0) {
                                    var $second = jQuery($inputs.get(k +1)).datepicker({
                                        dateFormat: 'yy-mm-dd'
                                    });

                                    var $first = jQuery(v).datepicker({
                                        dateFormat: 'yy-mm-dd',
                                        onSelect: function (dateStr) {
                                            var newDate = jQuery.datepicker.parseDate('yy-mm-dd', dateStr);
                                            newDate.setDate(newDate.getDate() + 10);
                                            $second.datepicker('setDate', newDate);
                                        }
                                    });
                                }

                            });

                        });
                })(jQuery);
            </script>
                </ul>
            </li>
        </ul>
    </div>

    <div class="tab-pane fade {{ tab_selector|default('visita') in ['visita'] ? 'in active' : '' }}" id="visita">
        <br/><br/>
        <h2 style="font-family: 'Oswald', sans-serif; font-weight: 300;">Registro</h2>
        <br/><br/>
        <table style="width: 750px; text-align: justify; border-collapse:separate; border-spacing:1em;">
            <tr>
                <td>{{ form_label(form.proveedor, 'Proveedor') }}</td>
                <td>
                    {% set label = '' %}
                    {% for choice in form.proveedor.vars.choices %}
                        {% if choice.value == form.proveedor.vars.value %}
                            {% set label = choice.label %}
                        {% endif %}
                    {% endfor %}

                    {{ label }}
                </td>
            </tr>
            <tr>
                <td>{{ form_label(form.nombre, 'Nombre contrato') }}</td>
                <td>{{ form.nombre.vars.value }}</td>
            </tr>
        </table>
        <ul>
            <li><ul class="visitas" data-prototype="{{ form_widget(form.visitas.vars.prototype)|e }}">
                {% for visita in form.visitas %}
                <li>
                    {{ form_row(visita.fechaProgramada) }}
                    {{ form_row(visita.fechaDeVisita) }}
                    {{ form_row(visita.isRealizada) }}
                    {{ form_row(visita.observaciones) }}

                    {{ form_row(visita.archivoInforme) }}
                    {% if visita.archivoInforme.vars.value.name is defined %}
                        {% if visita.archivoInforme.vars.value.name is not null %}
                            <label style="padding-bottom: 25px;">Descargar informe: </label> <a href="{{ asset( visita.archivoInforme.vars.value.webpath ) }}">{{ visita.archivoInforme.vars.value.name }}</a>
                        {% else %}
                            <label style="padding-bottom: 25px;">Descargar informe: </label> <a href="{{ asset( visita.archivoInforme.vars.value.webpath ) }}">Clic Aquí</a> 
                        {% endif %}
                    {% endif %}

                    {{ form_row(visita.archivoImagen) }}
                    {% if visita.archivoImagen.vars.value.name is defined %}
                        {% if visita.archivoImagen.vars.value.name is not null %}
                            <label style="padding-bottom: 25px;">Descargar imagen: </label> <a href="{{ asset( visita.archivoImagen.vars.value.webpath ) }}">{{ visita.archivoImagen.vars.value.name }}</a>
                        {% else %}
                            <label style="padding-bottom: 25px;">Descargar imagen: </label> <a href="{{ asset( visita.archivoImagen.vars.value.webpath ) }}">Clic Aquí</a>
                        {% endif %}
                    {% endif %}


                </li>
                {% endfor %}
                </ul>
            </li>
        </ul>

    </div>

</div>
{{ form_end(form) }}
{% endblock %}

这是生成的代码,但我有三个,因为我有很多contratos_garantias_ _fecha_recibido_daci和contratos_garantias_ _fecha_entrega字段

<div>
    <label style="vertical-align: top; padding-bottom: 35px;" for="contratos_garantias_0_fecha_recibido_daci" class="required">Fecha de recibido DACI</label>
<input type="date" id="contratos_garantias_0_fecha_recibido_daci" name="contratos[garantias][0][fecha_recibido_daci]" required="required"    class="myClass" value="2014-12-12" /></div>

<div><label style="vertical-align: top; padding-bottom: 35px;" for="contratos_garantias_0_fecha_entrega" class="required">Fecha de devolución al proveedor</label>
<input type="date" id="contratos_garantias_0_fecha_entrega" name="contratos[garantias][0][fecha_entrega]" required="required"    class="myClass" value="2014-10-15" /></div>

这是正在运行的代码的一部分,但现在问题是在页面加载后添加了原型功能的新字段

<ul>
            <li><ul class="garantias" data-prototype="{{ form_widget(form.garantias.vars.prototype)|e }}">
                {% set cuenta = 0 %}
                {% for garantia in form.garantias %}
                <li>

                    {{ form_row(garantia.garantiaTipo) }}
                    {{ form_row(garantia.fecha_emision) }}
                    {{ form_row(garantia.fecha_vencimiento) }}
                    {{ form_row(garantia.fecha_recibido_daci) }}
                    {{ form_row(garantia.fecha_entrega) }}              {# fecha entrega al proveedor #}                


                    {{ form_row(garantia.empresa_emite_garantia) }}
                    {{ form_row(garantia.tiempo_de_garantia) }}
                    {{ form_row(garantia.estado) }}
                    {{ form_row(garantia.isRecibido) }}
                    {{ form_row(garantia.porcentaje) }}
                    {{ form_row(garantia.monto) }}
                    {{ form_row(garantia.comentarios) }}
                    {{ form_row(garantia.archivo) }}

                    {% if garantia.archivo.vars.value.name is defined %}
                        {% if garantia.archivo.vars.value.name is not null %}
                            <label style="padding-bottom: 40px;">Descargar Archivo: </label> <a href="{{ asset( garantia.archivo.vars.value.webpath ) }}">{{ garantia.archivo.vars.value.name }}</a>
                        {% else %}
                            <label style="padding-bottom: 40px;">Descargar Archivo: </label> <a href="{{ asset( garantia.archivo.vars.value.webpath ) }}">Clic Aquí</a> 
                        {% endif %}
                    {% endif %}

                </li>
                    {% set cuenta = cuenta + 1 %}
                {% endfor %}
                <script>
                (function($) {
                        $(document).ready(function(){
                            //alert("hola");


                            /*
                            var $second = jQuery('#contratos_garantias_0_fecha_entrega').datepicker({
                                dateFormat: 'yy-mm-dd'
                            });*/


                            var prefix = 'myClass';
                            var $inputs = $('.' + prefix);


                            $inputs.each(function (k, v) {

                                if (k % 2 === 0) {
                                    var $second = jQuery($inputs.get(k +1)).datepicker({
                                        dateFormat: 'yy-mm-dd'
                                    });

                                    var $first = jQuery(v).datepicker({
                                        dateFormat: 'yy-mm-dd',
                                        onSelect: function (dateStr) {
                                            var newDate = jQuery.datepicker.parseDate('yy-mm-dd', dateStr);
                                            newDate.setDate(newDate.getDate() + 10);
                                            $second.datepicker('setDate', newDate);
                                        }
                                    });
                                }

                            });

                        });
                })(jQuery);
            </script>
                </ul>

答案就像tomanow解决方案的魅力,但我必须将此代码添加到我的相关javascript文件,使原型功能工作。有了这个,每个用例都被覆盖,我的意思是在添加和修改项目时。

1 个答案:

答案 0 :(得分:1)

var prefix = 'myClass';
var $inputs = $('.' + myClass);

$inputs.each(function (k, v) {

    if (k % 2 === 0) {
        var $second = $($inputs.get(k +1)).datepicker({
            dateFormat: 'yy-mm-dd'
        });

        var $first = $(v).datepicker({
            dateFormat: 'yy-mm-dd',
            onSelect: function (dateStr) {
                var newDate = $.datepicker.parseDate('yy-mm-dd', dateStr);
                newDate.setDate(newDate.getDate() + 14);
                $second.datepicker('setDate', newDate);
            }
        });
    }

});

FIDDLE