2013-02-18 45 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。