2012-01-13 98 views
7

似乎有是幾種方式提交(POST)jQuery中禁用的表單字段:在jQuery中提交禁用表單域的最佳方法?

  • 有一個隱藏字段,改變輸入更改時,並提交
  • 手動附加於鍵/值對在服務器端(僅如果不是預期值改變)提交
  • 還原值

我想知道它(如果有的話)被認爲是殘疾人提交表單字段的最佳實踐。顯然readOnly是可用時的最佳選擇,但我有我需要提交的複選框,即使它們已被禁用(由於業務邏輯)。我意識到這不是一個理想的情況,但很少是web開發中的情況。

是否有一個最佳做法提交禁用的表單元素呢?

+2

禁用的表單元素不應該被提交。正確的做法是在提交時創建隱藏的輸入。這裏的HTML文檔:http://www.w3.org/TR/html4/interact/forms.html#successful-controls – Dave 2012-01-13 18:05:11

+0

@戴夫所以你說的選項1是最好的選擇?這也是我所傾向的。另外,感謝您的文檔。 – Igor 2012-01-13 18:06:02

+0

@GrailsGuy關於你的第一個選擇,如果你有一個禁用的表單域,爲什麼輸入會改變? – 2012-05-09 08:59:56

回答

7

最好的辦法是使輸入只讀 - 創建,僅僅返回false複選框,單擊事件,並改變他們的背景顏色。

沒有最好的做法,而是一個需要最少捏造。

5

第四個解決方案是提交表單之前啓用複選框:

$("form").submit(function() { 
    $("input:checkbox", this).prop("disabled", false); 
}); 

可以使用更復雜的選擇,如果你不想重新啓用所有的複選框。

0

還有另一種方式,如果需要發佈的所有或某些disbaled輸入:

  1. 第一步:給一個類別名稱的域名(如MOD)。
  2. 步驟2:的onSubmit,啓用所有以下下面的例子中的那些字段:

    $( 「輸入[類= MOD]」)removeAttr( '禁用');

  3. 步驟3:郵政數據

  4. 步驟4:再次禁用這些字段(如果需要)按照下面的例子:

    $( 「輸入[類= MOD]」)ATTR('禁用= 「禁用」');