<form action="/projects/{{$project->id}}" method="POST">
{{ method_field('DELETE') }}
{{ method_field('PATCH') }}
{{ csrf_field() }}
<input type="text" name="heroname" value="{{$project->heroname}}"><br>
<textarea name="description" cols="30" rows="10" type="text">{{$project->description}}</textarea><br>
<button type="submit">Edit Info</button>
<button type="submit">Delete data</button>
</form>
这里的问题是,如果我把'PATCH‘放在后面,我的两个按钮都会更新东西,如果我把' delete’放在后面,两个按钮都会删除它。那么如何才能解决这个问题,使两个按钮都能在那里工作,而不是其他按钮。
发布于 2018-12-15 15:21:01
%1表单不能有%2个方法。
但是当用户点击按钮时,你可以改变它。
首先,你应该通过下面的代码来处理按钮的onclick事件:
<button onclick="changeMethod('PATCH')" type="submit">Edit Info</button>
<button onclick="changeMethod('DELETE')" type="submit">Delete data</button>
并为表单添加ID
<form action="/projects/{{$project->id}}" method="POST">
最后定义javasciprt函数
<script>
function changeMethod(methodName){
$('#myform').find('input[name=_method]').first().val(methodName);
}
</script>
当用户单击每个按钮并将方法的值更改为适当的值时,将调用此函数。
因此,您的完整代码将为:
<form id="myform" action="/projects/{{$project->id}}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<input type="text" name="heroname" value="3"><br>
<textarea name="description" cols="30" rows="10" type="text">4</textarea><br>
<button onclick="changeMethod('PATCH')" type="submit">Edit Info</button>
<button onclick="changeMethod('DELETE')" type="submit">Delete data</button>
</form>
<script>
function changeMethod(methodName){
$('#myform').find('input[name=_method]').first().val(methodName);
}
</script>
发布于 2018-12-15 15:24:40
您有两个选项(实际上是Saman注意到的三个):
forms:使用两种表单
这可能是最简单的(直到涉及到布局)。
<form action="/projects/{{$project->id}}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button type="submit">Delete data</button>
</form>
<form action="/projects/{{$project->id}}" method="POST">
{{ method_field('PATCH') }}
{{ csrf_field() }}
<input type="text" name="heroname" value="{{$project->heroname}}"><br>
<textarea name="description" cols="30" rows="10" type="text">{{$project->description}}</textarea><br>
<button type="submit">Edit Info</button>
</form>
使用一些CSS,您可以对齐两个按钮,使其看起来像一个表单。
JavaScript2: (/JQuery)
我将使用JQuery演示这一点。
HTML
<form id="form" action="/projects/{{$project->id}}" method="POST">
{{ csrf_field() }}
<input type="text" name="heroname" value="{{$project->heroname}}"><br>
<textarea name="description" cols="30" rows="10" type="text">{{$project->description}}</textarea><br>
<button type="submit">Edit Info</button>
<button type="submit">Delete data</button>
</form>
JS
$("#edit-button").click(function(event) {
//I experienced that sometimes the form submits although it's not a submit button
event.preventDefault();
$("#form input[type=hidden]").val("PATCH");
$(form).submit();
});
$("#delete-button").click(function(event) {
//I experienced that sometimes the form submits although it's not a submit button
event.preventDefault();
$("#form input[type=hidden]").val("DELETE");
$(form).submit();
});
https://stackoverflow.com/questions/53791129
复制相似问题