2012-07-08 55 views
13

我正在使用jQuery在單擊按鈕時提交表單。然後,我想測試該按鈕的值,但是,這不會在Safari和Chrome中提交。爲什麼?有沒有解決辦法?HTML表單按鈕值未在Safari和Chrome中發佈

測試在IE/FF下面的代碼,看看它的工作原理,並對其進行測試Safari /鉻中看到它沒有:

ButtonPostTest.php:

<?php 
    if(isset($_POST['testBtn'])) { 
     echo $_POST['testBtn']; 
    } 
?> 
<html> 
    <head> 
    <title></title> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#btn').click(function() { 
        $('form').submit(); // submit the form 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <form action="" method="post">   
      <button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button> 
     </form> 
    </body> 
</html> 

UPDATE:

同樣的事情發生與input

<input id="btn" class="page-btn" type="submit" name="testBtn" value="Post this"></input> 

此外,這只是一個問題時,提交使用jQuery .submit() - 沒有這個,它提交罰款與按鈕或輸入。

+0

感謝這個我指出了正確的方向。正在讓我發瘋,甚至沒有懷疑我之前添加的jquery.submit ...我發現了這種行爲的解釋以及它爲什麼會發生:http://stackoverflow.com/a/1709352/76672 – Jake 2014-06-26 20:53:20

+0

似乎工作在Chrome(Linux Mint)中確定。它已經使用Webkit的一段時間了,現在可能已經在Chrome中修復了。 – 2015-01-20 02:09:03

回答

0

<button><input>是兩個不同的標籤。如果你想提交你的按鈕值,然後使用<input>標籤。

+0

不幸的是,這並沒有解決問題,它產生了相同的結果:( – 2012-07-08 11:55:09

+1

你好邁克我有你的問題。我想知道你爲什麼使用jquery提交表單?如果你直接提交沒有jQuery的表單,如果你使用javascript的話,它不會提交按鈕的值 – Vins 2012-07-08 13:35:05

+0

我使用jQuery來提交表單,因爲我在表單中有多個提交按鈕,我想在表單操作之前改變它提交 - 取決於點擊哪個按鈕 – 2012-07-09 07:56:35

0

同意Vins,我可能會使用<input>

是否有一個特別的原因,您爲什麼使用<button>而不是<input>?我通常喜歡<button>(允許我補充圖標和圖像),但我相信有關於如何值被解釋瀏覽器之間的差異...

根據w3schoolsMozilla Developer Network,一些瀏覽器將提交屬性的值,而其他瀏覽器(如IE7)將錯誤地提交標籤之間的文本。

+0

如果您確實需要'

+2

更改按鈕輸入也不起作用,它仍然沒有提交。隱藏字段已提交,因此我可能必須使用此工作選項 - >單擊按鈕,將隱藏字段設置爲適當的值,然後提交表單,使用隱藏字段進行處理。我只是想知道是否有更好的解決方案? – 2012-07-08 11:54:18

+4

我將不再引用w3schools。我將不再參考w3schools。我將不再參考w3schools。 – Tuanderful 2013-03-18 23:34:20

1

我想你已經發現了一個webkit的bug。

我得到的東西同樣的測試在Chrome中,你的表格:

<form action="" method="post">   
    <button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button> 
</form> 

這不發送數據。如果'但是我添加另一個元素,輸入特別是:

<form action="" method="post">   
    <input type="hidden" name="shim" value="" /> 
    <button id="testBtn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button> 
</form> 

這會發送這兩個值。這沒有JavaScript。一旦添加了填充隱藏表單元素,它看起來像是有意義的。

該解決方案需要更多的測試,但它可能會滿足您的需求。

+0

我需要使用jQuery來提交,以便我可以在提交之前更改表單操作。仍然是相同的結果(當提交使用jQuery時)... – 2012-07-08 11:45:44

+0

我不確定這是否有所作爲。墊片的重點在於,我認爲Chrome可能會根據表單中表單元素的數量和類型而有所不同。 – artlung 2012-07-09 15:14:06

6

給它一個名字。

<button type='submit' id='trash' name='trash' value="trash" class='red'> 
+0

Bug分開,這也是有幫助的。 – Carlo 2015-05-18 11:08:58

2

正如羅伯特說,使用<button>標籤上方時,你既需要name=""value="",例如

<button name="Search" value="Simple" type="submit">Search</button> 

VS

<button name="Search" value="Advanced" type="submit">Search</button> 

在這個例子中你的POST數據將有重點價值對:

搜索簡單

搜索高級

,然後根據該崗位價值,你可以寫你的代碼,以採取適當的行動。 :)

即你不需要使用輸入,只需使用名稱/值的按鈕,你會沒事的。

0

嘗試像這樣通過捕獲隱藏的輸入發送按鈕作爲提交。

PHP:

<?php 
    if(isset($_POST['btname'])) 
     echo $_POST['btname']; 
    } 
?> 

和HTML:

<form method="POST" action="" id="formname" name="formname"> 
<input name="btname" id="btname" type="hidden" /> 
<button onclick="document.formname.submit()" value="Submit">Send</button> 
</form> 
0

有多少價值,你POST操作?

我不確定這聽起來像是你的問題解決了。有一件事沒有提到,你可能超過了你的php max_input_vars限制。

1. 計數接線柱陣列值:當你過沖這個限制,所以你必須檢查警告日誌,或檢查這種方式

PHP是沉默。編寫var_dump($_POST);腳本(在安全生產沙箱環境中)可以做到最好,因爲您可以查看最終值輸出以查看POST陣列「切斷」的位置。

2. 接下來,使用函數:phpinfo()運行腳本輸出php信息。檢查「max_input_vars」的值。

3. 如果POST數組數== ==「max_input_vars」的值,那麼你已經超過了限制。

就你而言,可能會出現提交輸入將被包含在POST後面的情況。

編輯在php.ini(在這個例子中,以5000)的值,添加或編輯這一行:max_input_vars = 5000