引导模式上的动态URL

时间:2016-06-29 22:02:06

标签: javascript php jquery laravel modal-dialog

我正在使用Laravel作为我的网络应用程序。

在我的“国家/地区”表格的每一行中,我都有一个“编辑”按钮,用于打开一个模态,并使用该国家/地区的现有名称填充文本区域。可以在数据库中编辑和更新此textarea。

这是我模态的部分代码:

{!! Form::model($country, [
    'method' => 'PATCH',
    'url' => ['country', 'lblCountryId'],
    'class' => 'form-horizontal'
]) !!}

// some more code

// and the edit button for each row
<td>
   <button type="submit" class="btn btn-primary btn-xs" 
         data-toggle="modal" data-target="#editModal"
         data-id=" {{ $item->id }}"
         data-name="{{ $item->name }}">
         <i class="fa fa-pencil" aria-hidden="true"></i>
   </button>
</td>

当模态显示时,我通过掌舵JS来填充文本字段的值:

$(function () {
    $('#editModal').on("show.bs.modal", function (e) {
        $("#lblCountryId").html($(e.relatedTarget).data('id'));
        document.getElementById("txtCountryName").value = $(e.relatedTarget).data('name');
    });
});

使用相同的脚本我想编辑表单发布的URL,但JS似乎不喜欢这样。

有什么办法可以根据我点击的哪一行动态更改表单的网址?

2 个答案:

答案 0 :(得分:1)

在前面的答案的帮助下,我能够以这种方式解决它:

以我的形式:

{!! Form::model($country, [
      'method' => 'PATCH',
      'class' => 'form-horizontal',
      'name' => 'myEditForm'
]) !!}

<td>
   <button type="submit" class="btn btn-primary btn-xs" 
         data-toggle="modal" data-target="#editModal"
         data-id=" {{ $item->id }}"
         data-name="{{ $item->name }}">
         <i class="fa fa-pencil" aria-hidden="true"></i>
   </button>
</td>

在我的JS中:

<script type="text/javascript">
$(function () {
    $('#editModal').on("show.bs.modal", function (e) {
        document.getElementById("txtCountryName").value = $(e.relatedTarget).data('name');
        document.myEditForm.action = "{{ url('country') }}" + '/' + $(e.relatedTarget).data('id');
    });
});
</script>

答案 1 :(得分:0)

将表单更改为:

{!! Form::model($country, [
    'method' => 'PATCH',
    'class' => 'form-horizontal',
    'id' => 'myForm'
]) !!}

你的剧本喜欢这个:

$(function () {
    $('#editModal').on("show.bs.modal", function (e) {
        var url = "{!! route('country', ':_data_id' ) !!}";
        $('#myForm').attr('action', url.replace( ':_data_id', e.relatedTarget.data('id') ) );
        document.getElementById("txtCountryName").value = $(e.relatedTarget).data('name');
    });
});