记住数据表中的下拉菜单和验证字段

Posted

技术标签:

【中文标题】记住数据表中的下拉菜单和验证字段【英文标题】:Remember dropdown and Validate fields in datable 【发布时间】:2016-01-06 11:30:00 【问题描述】:

第一个疑问是当我需要返回浏览器时如何记住选定的下拉菜单?我有几个字段,我输入了所需的数据并选择了所有下拉列表。如果有一些错误,重定向到具有特定错误的同一页面并且所有字段都已完成,但下拉列表没有,我必须再次选择。很烦。。 我正在将 Laravel 与 Blade 一起使用。我选择的一个例子是下一个:

<div class="form-group">
            <label class="col-md-3 control-label" for="country_id">  trans('provider.countries')  <span class="required">*</span></label>
            <div class="col-md-6">
                <div class="input-group btn-group">
                    <span class="input-group-addon">
                        <i class="fa fa-th-list"></i>
                    </span>
                    !! Form::select('country_id', $countries, old('country_id'), array('class' => 'form-control', 'required', 'id' => 'select_country', 'placeholder'=>'Seleccione un País', 'autocomplete'=>'off')) !!
                </div>
            </div>
        </div>

另一方面,我得到了一个包含 4 列的数据表,1 列带有选择,2 列带有输入数字。当我添加第一行时,字段验证工作正常,但是当我添加多行时,此验证不起作用.. 代码是下一个

<div class="table-responsive table-striped table-bordered table-condensed">
    <table class="table table-receipts invoice-items" id="receipt-table">
      <thead>
        <tr class="h5 text-dark">
          <th id="cell-item" class="text-weight-semibold vertical-center">Producto</th>
          <th id="cell-store" class="text-center text-weight-semibold absolute-center">Sucursal</th>
          <th id="cell-price" class="text-center text-weight-semibold absolute-center">Precio Unitario</th>
          <th id="cell-qty" class="text-center text-weight-semibold absolute-center">Cantidad</th>
          <th id="cell-delete" class="text-center text-weight-semibold absolute-center">Acciones</th>
        </tr>
      </thead>
      <tbody>
        <tr class="hide default-row-product">
          <td class="col-md-4 text-weight-semibold text-dark vertical-center">
            <input type="hidden" name="products[]">
          </td>
          <td class="col-md-2 text-center">
            !! Form::select('stores[]', $stores, '', array('class' => 'form-control', 'required', 'placeholder'=>'Seleccionar', 'id'=>'stores_id')) !!
          </td>
          <td class="col-md-1 text-center">
            <input type="number" name="prices[]" class="form-control" min="1" step="0.1" id="prices_id" required>
          </td>
          <td class="col-md-1 text-center">
            <input type="number" name="quantities[]" class="form-control" min="1" step="0.1" id="quantities_id" required>
            <td class="col-md-1 text-center">
              <button type="button" class="mb-xs mt-xs mr-xs btn btn-xs btn-danger" id="button-delete-product"><i class="fa fa-trash"></i></button>
            </td>
          </tr>
        </tbody>
      </table>
    </div>

问候!

【问题讨论】:

【参考方案1】:

第一个问题的答案: 您必须将所选选项存储在本地存储或 cookie 中:

// store value in local storage
$('select[name="country_id"]').change(function() 
    localStorage.setItem('selected', this.value);
);

// restore selected value from local storage after page was loaded
if(localStorage.getItem('selected'))
    $('select[name="country_id"]').val(localStorage.getItem('selected'));

或者你可以使用会话。在验证数据后的控制器中,将所选选项放入会话中。

if($validator->fails) 
    return Redirect:to('/form')->with('selected', Input::get('question_id');

并在视图中使用 jQuery:

@if(Session::has('selected')
$(document).ready(function() 
   $('select[name="country_id"]').val(" Session::get('selected') ");
);
@endif    

编辑: 验证输入数组(价格):

$prices = Input::get('prices');
// create array for each price input
for($i = 0; $i <= count($prices); $i++)
    $rules['prices.' . $i] = 'required|numeric|between:0,100'; 


$validator = Validator::make($prices, $rules);

【讨论】:

您好,感谢您的回复。稍后我会尝试您的代码。查看数据表 tbody,每个字段都需要有值的间隔。当我添加第二 n 行时,此验证不起作用。我确认表单,重定向页面,然后向我显示请求的错误验证。

以上是关于记住数据表中的下拉菜单和验证字段的主要内容,如果未能解决你的问题,请参考以下文章

请问下拉菜单怎么联动数据变化?

Rails表单中的下拉菜单和常量的使用

layui的 下拉菜单 如何验证是不是已选

MVC5中的自动完成下拉菜单?

用js或者jq实现,根据下拉菜单的字段来显示对应的内容?

添加下拉菜单 iOS