2013-02-18 15 views
1

我正在使用如下所示的HTML表单。在PHP中未检测到表单中的按钮

<form name="frmUploadFile" id="frmUploadFile" action="file1.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="flUpload" id="flUpload"/> 
    <input type="button" name="btnButton" id="btnButton" value="Button Form"/>  
</form> 

当我提交表单时,按钮在PHP Post方法中没有被检测到。但是当我替换输入类型=“提交”时,提交被检测到并且它的值得到显示。

if(isset($_REQUEST['btnButton'])) 
{ 
    $File = $_FILES['flUpload']; 

    print "File Name : ".$File['name']; 
    exit(); 
} 

我通过以下的jQuery提交表单

$('#btnButton').click(function(){ 
    $('#frmUploadFile').submit(); 
}); 

上面没有works.Despite按钮是一个表单元素,为什么PHP中没有检测到按钮

+0

按钮有自己的标签:'

+0

另外,一个''不会提交表单。他们只在那里,所以你可以在JS中捕捉到它们。 – slugonamission 2013-02-18 13:41:22

+0

当你做一个'print_r($ _ REQUEST);'? – 2013-02-18 13:41:34

回答

2

只有“成功”表单控件将以表单数据提交。 <input type="button">永远不会成功,因为它仅存在JavaScript绑定。

如果用type="submit"代替它用它来提交表单(而不是用JavaScript覆盖它),那么数据就会出现。


更新响应评论:

我通过jQuery的

提交表单您因此要么调用形式的submit()方法(这不会使任何按钮成功),或者您正在使用Ajax(在这种情况下,您可能不会提交该文件)。

在任何一种情况下,按钮都不会构成数据的一部分,因此请勿使用它来确定表单是否已提交。检查文件是否在数据中,或者用于提出请求的方法是


另外,请不要使用<input type="button"> + JS提交表单。相反,请遵循Progressive EnhancementUnobtrusive JavaScript的原则。使用常规提交按钮,然后使用JavaScript对其进行增强。


响应编辑进一步更新:

JavaScript是没有做任何事情,一个提交按钮不会做。使用type="submit"并完全删除JS。