我需要帮助确定我的表单是通过onChange事件提交的,而不是用户单击“提交”按钮。
要使问题复杂化,我需要能够识别PHP中的差异。
示例HTML:
<form name='editdata' method='post' action='/editpage/recordnumber'>
<select name='select1' onchange='this.form.submit()'><options...></select>
<select name='select2' onchange='this.form.submit()'><options...></select>
<select name='select3' onchange='this.form.submit()'><options...></select>
<input type='submit' value='Submit' />
</form>
最终,我只需要使用PHP来识别表单是由onChange事件提交还是按提交按钮提交。
到目前为止,我发现我可以将提交按钮命名为“提交”。这将设置$_POST['submit']
,从而告诉我用户点击了按钮。但是,当我将name属性添加到提交按钮时,应用于我的几个Selects的onChange事件this.form.submit()
将停止运行。
如果我可以使用一种方法或另一种方法将某种queryString添加到我的提交URL的末尾,我认为这样可以完成工作。
答案 0 :(得分:3)
您可以设置一个隐藏字段,该字段由事件更新:
<form name='editdata' method='post' action='/editpage/recordnumber'>
<input type="hidden" name="submitted_on_change" value="0">
<select name='select1' onchange='form_submit()'><options...></select>
<select name='select2' onchange='form_submit()'><options...></select>
<select name='select3' onchange='form_submit()'><options...></select>
<input type='submit' value='Submit' />
</form>
<script>
var form_submit = function() {
// update the hidden field to 1
// then submit the form
}
</script>
答案 1 :(得分:1)
您可以在onchange中调用多个函数,并使用导致提交表单的select字段的名称填充另一个字段(或者在按下提交按钮时为空):
<form name='editdata' method='post' action='/editpage/recordnumber'>
<input type='hidden' name='field' value='' />
<select name='select1' onchange='this.form.field.value=this.name; this.form.submit();'><options...></select>
<select name='select2' onchange='this.form.field.value=this.name; this.form.submit();'><options...></select>
<select name='select3' onchange='this.form.field.value=this.name; this.form.submit();'><options...></select>
<input type='submit' value='Submit' />
</form>