如何从输入中获取价值并发送到路线?

时间:2019-07-12 12:16:18

标签: php jquery html laravel

我在模态窗口的输入中获得了价值,我不能将其用于路线

我试图使用jQuery来获得价值,但对我来说却行不通。

模式窗口HTML:

<div class="modal fade" id="deleteValueModal" role="dialog">
    <div class="modal-content">
        <div class="modal-header">
            ...
        </div>
        <div class="modal-body">
            <form method="post" action="{{route('delete_value', $('#valueId').val())}}" id="deleteValueForm"                       
                        enctype="multipart/form-data">                        
                <label>Are you sure that you want to delete? 
                </label>        
            </form>
        </div>
        <div class="modal-footer">
            <input type="submit" id="valueId" name="valueId" value="" form="deleteValueForm" class="btn btn-primary">
        </div>
    </div>
</div>

JavaScript:

$(document).on("click", ".open-deleteValueModal", function () {
    const myValue = $(this).data('id');
    $(".modal-body #valueId").val( myValue );

IDE向我显示以下形式的jQuery代码警告

Expected: identifier

Laravel也向我展示jQuery的错误:

syntax error, unexpected '(', expecting variable (T_VARIABLE) or '{' or '$' (View: ... )

2 个答案:

答案 0 :(得分:3)

假设您的命名路线delete_value看起来像/posts/delete/{id}。那么您应该使用以下默认值(例如“ 0”)呈现表单:

{{route('delete_value', 0)}}

现在,在渲染刀片之后,动作应如下所示:

http://localhost:8000/posts/delete/0

最后,您可以使用jQuery直接更新操作值,如下所示:

$(document).on("click", ".open-deleteValueModal", function () {
    const myValue = $(this).data('id');

    // Optional validation
    if (parseInt(myValue) <= 0 || myValue == "") {alert('Some validation message');return;}
    // Get the default route
    var route = $("#deleteValueForm").attr("action");
    // Remove the current ID value
    route = route.substr(0, route.lastIndexOf("/")+1);
    // Attach the new ID value to the route
    route += myValue;
    // Update the form action with the new route
    $("#deleteValueForm").attr("action", route);
});

为什么会出现此错误:

您将意外的值$('#valueId').val()传递给route()方法,该方法中期望使用'String',[PHP => Array]或$(varible)。

注意:

只有在加载后才能更改DOM元素属性。

答案 1 :(得分:-1)

如果我是你,我会像这样更改模式打开中的表单动作 $('#deleteValueForm').attr('action', {{route('delete_value', $('#valueId').val())}})

$(document).on("click", ".open-deleteValueModal", function () { const myValue = $(this).data('id'); $('#deleteValueForm').attr('action', {{route('delete_value', myValue)}}) })

这样,当您单击简单的表单时,表单已经具有提交到的路由 <input type="submit" value="Submit">按钮