javascript - 如何防止变量在其中保存数据

标签 javascript jquery laravel

我遇到了这个问题 我有一个输入,根据 radio 选择,它会变成 type number or date 也有一个选择,所有这些都在我的表单中带有一个提交按钮。 问题是,如果按下第一个 radio 并发送数据,它工作得很好,但如果我有机会使用 date type 并返回到 number type,它会保存最旧的数据,并在提交后保存选择值。 Obsly 我正在从一个更改为另一个后清除输入

我的看法

<form class="form-horizontal" id="form_transferencias_enviadas">
  <fieldset>
    <legend>Parámetro de impresión</legend>
    <div class="form-group">

      <div class="col-xs-2">
        <input type="number" min="0" id="parametro_impresion" required>
      </div>
      <div class="col-xs-3" id="hasta_hidden" hidden>
        <span>Hasta:</span>
        <input type="date" id="parametro_impresion_hasta">
      </div>

    </div>
    <div class="form-group">
      <div class="col-xs-2" id="select_hidden" hidden>
        <select id="slc_transferencia_destino" class="form-control" style="width: 100%;">
                                            @foreach($empresas as $empresa)
                                                @if($empresa->nombre!=Auth::user()->activo()->pluck('nombre')->first())
                                                    <option value="{{$empresa->nombre}}">{{$empresa->nombre}}</option>
                                                @endif

                                            @endforeach
                                        </select>

      </div>
    </div>
    <div>
      <button type="submit" class="btn btn-primary">Buscar</button>
    </div>
  </fieldset>
</form>

我的 js

//ocultar campos
$(document).ready(function() {
  $('input[name="busqueda_radio"]').on('ifClicked', function(event) {
    var num = parseInt(this.value)
    switch (num) {
      case 1:
        $('#select_hidden').prop('hidden', true).prop('disabled', true)
        $('#hasta_hidden').prop('hidden', true).prop('disabled', true)
        $('#parametro_impresion').prop('type', 'number').val('').prop('hidden', false).prop('disabled', false)
        submit_buton(num)
        break
      case 2:
        $('#select_hidden').prop('hidden', true).prop('disabled', true)
        $('#parametro_impresion').prop('type', 'date').val('').prop('hidden', false).prop('disabled', false)
        $('#hasta_hidden').prop('hidden', false).prop('disabled', false)
        submit_buton(num)
        break
      case 3:
        $('#hasta_hidden').prop('hidden', true).prop('disabled', true)
        $('#parametro_impresion').prop('hidden', true).prop('disabled', true)
        $('#select_hidden').prop('hidden', false).prop('disabled', false)
        submit_buton(num)
        break
    }
  })
})


function por_numero(numero_transferencia) {
  console.log(numero_transferencia)
}

function por_fecha(desde, hasta) {
  console.log(desde + ' hasta ' + hasta)
}

function por_destino(destino) {
  console.log(destino)
}

function submit_buton(caso) {
  $('#form_transferencias_enviadas').submit(function(e) {
    e.preventDefault()
    switch (caso) {
      case 1:
        por_numero($('#parametro_impresion').val())
        break
      case 2:
        por_fecha($('#parametro_impresion').val(), $('#parametro_impresion_hasta').val())
        break
      case 3:
        por_destino($('#slc_transferencia_destino').val())
        break

    }
  })
}

感谢帮助

最佳答案

每次调用 submit_buton 时,都会向表单添加一个新的 submit 处理程序,但不会删除旧的处理程序。因此,当您提交表单时,它会运行所有您附加的提交处理程序。

您应该在添加新的处理程序之前删除旧的处理程序:

$('#form_transferencias_enviadas').off("submit").submit(function(e) {
    ...
});

关于javascript - 如何防止变量在其中保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49269305/

相关文章:

javascript - 如何使用 jquery 隐藏/更新/显示具有相同 ID 的多个实例?

javascript - 无法显示 angularJS 范围组件

javascript - Vue 过滤器函数总是返回 5 个以上的元素

json - 单元测试 Laravel 需要有关如何正确传递我的变量的帮助

jquery - 重构此 jQuery 代码

javascript - 如何在用户离开网站/域时向用户发出 JavaScript 警报?

javascript - 阻止表单将值推送到 url javascript

javascript - 检查特定类的 div 是否包含文本或为空

jquery - angularjs sortable - 更新排序顺序属性

javascript - HTML脚本加载时如何赋值