2012-01-14 19 views
16

action屬性爲「#」(數字/磅符號/符號/字符)是什麼意思?表單動作屬性爲「#」(數字/磅符號/符號/字符)是什麼意思?

當表單輸入的formaction屬性設置爲「#」時會發生什麼?這是否會阻止將輸入提交給服務器?

<form method="GET" action="example.php"> 
    <input type="text" size="20" name="text1" value="text1" formaction="#"/> 
    <input type="text" size="20" name="text2" value="text2"/> 
    <input type="submit" value="Submit"/> 
</form> 

回答

10

作爲URL引用的#的含義(無論是action還是formaction屬性值或其他)都是對當前基礎文檔開始的引用。基本文檔是當前文檔,除非已設置<base href=...>標籤。

發生什麼取決於情況。通常,瀏覽器再次使用URL中的查詢部分請求頁面(並再次加載頁面,這可能意味着運行客戶端腳本),但是如果之前使用過相同的查詢,瀏覽器可能會使用它的緩存。而且,當引用文檔的開始時,關注任何表單元素都會丟失,並且頁面可能向後滾動。

雖然#在某些編碼風格中相當普遍,但它並不可靠。其目的是使用客戶端事件處理程序更好地實現。

formaction屬性僅用於提交按鈕。文本輸入元素不構成提交按鈕,即使它可能會觸發表單提交,所以此處屬性將被忽略。

+0

恰到好處:當你說「這是可靠的」時,你的意思是「它不可靠」嗎? – 2014-08-14 14:05:28

+0

@MattGibson,對,謝謝,糾正。 – 2014-08-14 14:26:51

2

表單將提交給自己(當前URL)。我認爲這與空洞的行動是一樣的。

此外,如果在稍後的時間將要通過javascript更改操作,可能會有用。

1

解釋上W3Schools的:http://www.w3schools.com/html5/html5_form_attributes.asp

表單重寫屬性

表單重寫屬性,可以覆蓋某些表單元素設置 屬性。

表單重寫屬性有:

formaction - 重寫形式action屬性
formenctype - 重寫形式enctype屬性
formmethod - 重寫表單方法屬性
formnovalidate - 重寫形式novalidate屬性
formtarget - 覆蓋表單目標屬性
注意:表單覆蓋屬性適用於以下類型:
提交和圖像。

<form action="demo_form.asp" method="get" id="user_form"> 
E-mail: <input type="email" name="userid" /><br /> 
<input type="submit" value="Submit" /> 
<br /> 
<input type="submit" formaction="demo_admin.asp" value="Submit as admin" /> 
<br /> 
<input type="submit" formnovalidate="true" 
value="Submit without validation" /> 
<br /> 
</form> 

所以,是的,你是絕對正確的,它覆蓋了行動,但只覆蓋輸入型提交和圖像,而不是文字。所以你可以在同一個表單中有兩個不同的提交按鈕,但可以導致不同類型的validaton。這就是我會用它的。

因此,一個將把行動放在同一頁面,而不是另一個。