Javascript/PHP onSubmit-按下了哪个按钮?
我有一个表单,它有3个按钮:Javascript/PHP onSubmit-按下了哪个按钮?,javascript,php,jquery,forms,Javascript,Php,Jquery,Forms,我有一个表单,它有3个按钮: <input type='submit' name='mconfirm' value=' Confirm '> <input type='submit' name='modify' value=' Modify '> <input type='button' name='cancel' value=' Cancel ' onClick='goVachSub();'></td></tr>
<input type='submit' name='mconfirm' value=' Confirm '>
<input type='submit' name='modify' value=' Modify '>
<input type='button' name='cancel' value=' Cancel ' onClick='goVachSub();'></td></tr>
该表单还具有以下功能:
<form name='achievement_modify' method='post' onSubmit='return check_num();' action='".$_SERVER['PHP_SELF']."'>
当按下任一提交按钮时,将运行check_num()函数,对某些需求进行一些检查。但是,当按下modify按钮时,我不需要运行这些检查,但是我仍然将modify按钮作为submit按钮,因为action='“$”服务器['PHP_SELF']保留了我的所有表单数据
我正在寻找一种方法来修改check_num,这样如果它可以确定提交时按了modify,它将不会执行check_num代码。更改它,使其类似于:如果按modify,则不执行任何操作。否则,请更改check_num代码。或者更改modify,使其不是仍然能够保留表单数据的提交按钮
在我的表单中实际发生的情况是,它有一堆文本和下拉列表,然后用户将提交它。输入的数据将再次显示,然后出现上述三个按钮(确认、修改、取消),修改应将其恢复到文本和下拉列表中,数据保持不变
<?php
echo (isset($_POST['mconfirm']))?("mconfirm was pressed"):("mconfirm wasn't pressed");
?>
小提琴:
要获取值,请执行以下操作:
$('input[name=ciccio]').click(function(){
alert($(this).val());
});
基本上,最好的解决方案是添加检查按钮,而不是表单提交
<input type='submit' name='mconfirm' value=' Confirm ' onclick="return check_num();">
<input type='submit' name='modify' value=' Modify '>
<input type='button' name='cancel' value=' Cancel ' onClick='goVachSub(); return check_num();'>
不幸的是,没有解决方案,因为事件对象不包含有关触发表单提交的提交按钮的数据,因为您也可以通过javascript调用表单提交,而无需单击任何提交按钮
<form name='achievement_modify' method='post' onSubmit='return check_num(event);' action='".$_SERVER['PHP_SELF']."'>
仅当表单提交由提交按钮触发时,才适用于mozilla
<form name='achievement_modify' method='post' onSubmit='return check_num(event);' action='".$_SERVER['PHP_SELF']."'>
最好的方法是只通过按钮来处理它,但若你们甚至想要点击哪个按钮,那个么在所有按钮上设置click event(点击事件),它将以hwlp的形式设置变量或属性,以识别点击哪个按钮。
例如:jquery示例
var form=$('your form selector');
form.find('input[type="submit"]').click(function(e){
var name=this.name;
form.attr("data-triggeredBy",name);
});
//than in your check num function
function check_num(){
var btnName=$('your form selector').attr("data-triggeredBy");
if(btnName!="modify"){
//do stuff
}
}
具有name属性的submit按钮将像任何被单击的输入元素一样提交其
值
,因此if(isset($\u POST['modify']){…}
将捕获此类内容。您可以检查,在检查中按下了哪个按钮如果你不想在某些按钮上提交表单,你只需要阻止默认操作(=提交表单).@MarcB,OP想在客户端而不是服务器上捕获它。@djot我该如何检查我的函数中按下了哪个按钮?OP的可能副本只想在单击某个按钮时运行JS函数!而不是检查服务器端单击了什么。对不起,先生,我第一次检查帖子时没有写。我很抱歉我更新了上面的帖子,展示了一种舒适的方法来检查用jQuery按下了哪个按钮。事实上,我想你提到的第一个想法完全忘记了,可能真的会起作用……我只需要去掉onSubmit并将函数onClick。当表单再次从按下的modify按钮加载时,它仍然有$\u POST数组数据,因为提交的操作。@user2859406是的,第一种方法更适合您。只是为了解释,我写了其他方法。
<form name='achievement_modify' method='post' onSubmit='return check_num(event);' action='".$_SERVER['PHP_SELF']."'>
function check_num(e){
var targetBtn=e.explicitOriginalTarget;
if(targetBtn.name!="modify"){
//do stuff
}
}
var form=$('your form selector');
form.find('input[type="submit"]').click(function(e){
var name=this.name;
form.attr("data-triggeredBy",name);
});
//than in your check num function
function check_num(){
var btnName=$('your form selector').attr("data-triggeredBy");
if(btnName!="modify"){
//do stuff
}
}