Biểu mẫu html hoạt động như thế nào?

Biểu mẫu HTML là một phần của tài liệu chứa nội dung bình thường, đánh dấu, các phần tử đặc biệt được gọi là điều khiển [hộp kiểm, nút radio, menu, v.v. ] và nhãn trên các điều khiển đó. Người dùng thường "hoàn thành" một biểu mẫu bằng cách sửa đổi các điều khiển của nó [nhập văn bản, chọn các mục menu, v.v. ], trước khi gửi biểu mẫu cho đại lý để xử lý [e. g. , tới máy chủ Web, tới máy chủ thư, v.v. ]

Đây là một biểu mẫu đơn giản bao gồm nhãn, nút radio và nút ấn [đặt lại biểu mẫu hoặc gửi biểu mẫu]

 
    

First name:
Last name:
email:
Male
Female

Ghi chú. Thông số kỹ thuật này bao gồm thông tin chi tiết hơn về biểu mẫu trong các tiểu mục về vấn đề hiển thị biểu mẫu

Người dùng tương tác với các biểu mẫu thông qua các điều khiển được đặt tên

"Tên điều khiển" của điều khiển được cung cấp bởi thuộc tính tên của nó. Phạm vi của thuộc tính tên cho một điều khiển trong phần tử MẪU là phần tử MẪU

Mỗi điều khiển có cả giá trị ban đầu và giá trị hiện tại, cả hai đều là chuỗi ký tự. Vui lòng tham khảo định nghĩa của từng điều khiển để biết thông tin về các giá trị ban đầu và các ràng buộc có thể có đối với các giá trị do điều khiển áp đặt. Nói chung, "giá trị ban đầu" của điều khiển có thể được chỉ định bằng thuộc tính giá trị của phần tử điều khiển. Tuy nhiên, giá trị ban đầu của phần tử TEXTAREA được cung cấp bởi nội dung của nó và giá trị ban đầu của phần tử ĐỐI TƯỢNG trong biểu mẫu được xác định bởi việc triển khai đối tượng [i. e. , nó nằm ngoài phạm vi của thông số kỹ thuật này]

"Giá trị hiện tại" của điều khiển trước tiên được đặt thành giá trị ban đầu. Sau đó, giá trị hiện tại của điều khiển có thể được sửa đổi thông qua tương tác của người dùng và tập lệnh

Giá trị ban đầu của điều khiển không thay đổi. Do đó, khi một biểu mẫu được đặt lại, giá trị hiện tại của mỗi điều khiển được đặt lại về giá trị ban đầu. Nếu một điều khiển không có giá trị ban đầu, ảnh hưởng của việc đặt lại biểu mẫu đối với điều khiển đó là không xác định

Khi một biểu mẫu được gửi để xử lý, một số điều khiển có tên được ghép nối với giá trị hiện tại của chúng và các cặp này được gửi cùng với biểu mẫu. Những điều khiển mà cặp tên/giá trị được gửi được gọi là điều khiển thành công

HTML định nghĩa các loại điều khiển sau

nút Tác giả có thể tạo ba loại nút

Tác giả tạo các nút có phần tử BUTTON hoặc phần tử INPUT. Vui lòng tham khảo định nghĩa của các phần tử này để biết chi tiết về cách chỉ định các loại nút khác nhau

Ghi chú. Các tác giả nên lưu ý rằng phần tử BUTTON cung cấp khả năng hiển thị phong phú hơn phần tử INPUT

hộp kiểmHộp kiểm [và nút radio] là công tắc bật/tắt mà người dùng có thể bật/tắt. Công tắc được "bật" khi thuộc tính đã kiểm tra của thành phần điều khiển được đặt. Khi một biểu mẫu được gửi, chỉ các điều khiển hộp kiểm "bật" mới có thể thành công

Một số hộp kiểm trong một biểu mẫu có thể có cùng tên điều khiển. Vì vậy, ví dụ, các hộp kiểm cho phép người dùng chọn một số giá trị cho cùng một thuộc tính. Phần tử INPUT được sử dụng để tạo điều khiển hộp kiểm

các nút radioCác nút radio giống như các hộp kiểm ngoại trừ khi một số chia sẻ cùng một tên điều khiển, chúng sẽ loại trừ lẫn nhau. khi một cái được bật "on", tất cả những cái khác có cùng tên sẽ bị "tắt". Phần tử INPUT được sử dụng để tạo điều khiển nút radio. Nếu không có nút radio nào trong một nhóm có cùng tên điều khiển được "bật" ban đầu, hành vi của tác nhân người dùng để chọn điều khiển nào ban đầu được "bật" là không xác định. Ghi chú. Do các triển khai hiện tại xử lý trường hợp này theo cách khác, nên thông số kỹ thuật hiện tại khác với RFC 1866 [[RFC1866] phần 8. 1. 2. 4], trong đó nêu rõ
Tại mọi thời điểm, chính xác một trong các nút radio trong bộ được chọn. Nếu không có thành phần nào của tập hợp các nút radio chỉ định `CHECKED', thì tác nhân người dùng phải kiểm tra nút radio đầu tiên của tập hợp đó ngay từ đầu

Do hành vi của tác nhân người dùng khác nhau, nên các tác giả phải đảm bảo rằng trong mỗi bộ nút radio, một nút ban đầu được "bật"

menuMenu cung cấp cho người dùng các tùy chọn để chọn. Phần tử SELECT tạo menu, kết hợp với phần tử OPTGROUP và OPTION. nhập văn bản Tác giả có thể tạo hai loại điều khiển cho phép người dùng nhập văn bản. Phần tử INPUT tạo điều khiển đầu vào một dòng và phần tử TEXTAREA tạo điều khiển đầu vào nhiều dòng. Trong cả hai trường hợp, văn bản đầu vào trở thành giá trị hiện tại của điều khiển. chọn tệp Loại điều khiển này cho phép người dùng chọn tệp để nội dung của chúng có thể được gửi bằng biểu mẫu. Phần tử INPUT được sử dụng để tạo điều khiển chọn tệp. điều khiển ẩn Tác giả có thể tạo điều khiển không được hiển thị nhưng có giá trị được gửi cùng với biểu mẫu. Các tác giả thường sử dụng loại điều khiển này để lưu trữ thông tin giữa các trao đổi máy khách/máy chủ mà nếu không sẽ bị mất do tính chất không trạng thái của HTTP [xem [RFC2616]]. Phần tử INPUT được sử dụng để tạo điều khiển ẩn. điều khiển đối tượng Tác giả có thể chèn các đối tượng chung trong các biểu mẫu sao cho các giá trị liên quan được gửi cùng với các điều khiển khác. Tác giả tạo các điều khiển đối tượng với phần tử ĐỐI TƯỢNG

Các phần tử được sử dụng để tạo các điều khiển thường xuất hiện bên trong phần tử MẪU, nhưng cũng có thể xuất hiện bên ngoài khai báo phần tử MẪU khi chúng được sử dụng để xây dựng giao diện người dùng. Điều này được thảo luận trong phần về các sự kiện nội tại. Lưu ý rằng các điều khiển bên ngoài biểu mẫu không thể là điều khiển thành công

thẻ bắt đầu. bắt buộc, Thẻ kết thúc. yêu cầu

Định nghĩa thuộc tính

action = uri [CT]Thuộc tính này chỉ định tác nhân xử lý biểu mẫu. Hành vi tác nhân người dùng cho một giá trị không phải là URI HTTP không được xác định. phương pháp = nhận. post [CI]Thuộc tính này chỉ định phương thức HTTP nào sẽ được sử dụng để gửi tập dữ liệu biểu mẫu. Các giá trị có thể [không phân biệt chữ hoa chữ thường] là "get" [mặc định] và "post". Xem phần gửi biểu mẫu để biết thông tin sử dụng. enctype = content-type [CI] Thuộc tính này chỉ định loại nội dung được sử dụng để gửi biểu mẫu tới máy chủ [khi giá trị của phương thức là "bài đăng"]. Giá trị mặc định cho thuộc tính này là "application/x-www-form-urlencoded". Giá trị "multipart/form-data" nên được sử dụng kết hợp với phần tử INPUT, type="file". accept-charset = danh sách bộ ký tự [CI] Thuộc tính này chỉ định danh sách mã hóa ký tự cho dữ liệu đầu vào được máy chủ xử lý biểu mẫu này chấp nhận. Giá trị là danh sách các giá trị bộ ký tự được phân tách bằng dấu cách và/hoặc dấu phẩy. Khách hàng phải diễn giải danh sách này dưới dạng danh sách độc quyền-hoặc danh sách, tôi. e. , máy chủ có thể chấp nhận bất kỳ mã hóa ký tự đơn nào cho mỗi thực thể nhận được

Giá trị mặc định cho thuộc tính này là chuỗi dành riêng "UNKNOWN". Tác nhân người dùng có thể diễn giải giá trị này dưới dạng mã hóa ký tự được sử dụng để truyền tài liệu chứa phần tử FORM này

accept = content-type-list [CI] Thuộc tính này chỉ định danh sách các loại nội dung được phân tách bằng dấu phẩy mà máy chủ xử lý biểu mẫu này sẽ xử lý chính xác. Tác nhân người dùng có thể sử dụng thông tin này để lọc ra các tệp không phù hợp khi nhắc người dùng chọn tệp để gửi đến máy chủ [cf. phần tử INPUT khi type="file"]. name = cdata [CI]Thuộc tính này đặt tên cho thành phần để nó có thể được tham chiếu từ biểu định kiểu hoặc tập lệnh. Ghi chú. Thuộc tính này đã được đưa vào để tương thích ngược. Các ứng dụng nên sử dụng thuộc tính id để xác định các phần tử

Các thuộc tính được xác định ở nơi khác

Phần tử FORM đóng vai trò là nơi chứa các điều khiển. Nó chỉ định

  • Bố cục của biểu mẫu [được đưa ra bởi nội dung của phần tử]
  • Chương trình sẽ xử lý biểu mẫu đã hoàn thành và đã gửi [thuộc tính hành động]. Chương trình nhận phải có khả năng phân tích các cặp tên/giá trị để sử dụng chúng
  • Phương thức mà dữ liệu người dùng sẽ được gửi đến máy chủ [thuộc tính phương thức]
  • Mã hóa ký tự phải được máy chủ chấp nhận để xử lý biểu mẫu này [thuộc tính accept-charset]. Tác nhân người dùng có thể thông báo cho người dùng về giá trị của thuộc tính accept-charset và/hoặc hạn chế khả năng nhập các ký tự không được nhận dạng của người dùng

Một biểu mẫu có thể chứa văn bản và đánh dấu [đoạn văn, danh sách, v.v. ] ngoài các điều khiển biểu mẫu

Ví dụ sau đây cho thấy một biểu mẫu sẽ được xử lý bởi chương trình "adduser" khi được gửi. Biểu mẫu sẽ được gửi đến chương trình bằng phương thức "đăng" HTTP

 
 ...form contents...
 

Vui lòng tham khảo phần gửi biểu mẫu để biết thông tin về cách tác nhân người dùng phải chuẩn bị dữ liệu biểu mẫu cho máy chủ và cách tác nhân người dùng nên xử lý các phản hồi dự kiến

Ghi chú. Thảo luận thêm về hành vi của các máy chủ nhận dữ liệu biểu mẫu nằm ngoài phạm vi của thông số kỹ thuật này



INPUT - O EMPTY              -- form control -->
%attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- what kind of widget is needed --
  name        CDATA          #IMPLIED  -- submit as part of form --
  value       CDATA          #IMPLIED  -- Specify for radio buttons and checkboxes --
  checked     [checked]      #IMPLIED  -- for radio buttons and check boxes --
  disabled    [disabled]     #IMPLIED  -- unavailable in this context --
  readonly    [readonly]     #IMPLIED  -- for text and passwd --
  size        CDATA          #IMPLIED  -- specific to each type of field --
  maxlength   NUMBER         #IMPLIED  -- max chars for text fields --
  src         %URI;          #IMPLIED  -- for fields with images --
  alt         CDATA          #IMPLIED  -- short description --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  ismap       [ismap]        #IMPLIED  -- use server-side image map --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  onselect    %Script;       #IMPLIED  -- some text was selected --
  onchange    %Script;       #IMPLIED  -- the element value was changed --
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  >

thẻ bắt đầu. bắt buộc, Thẻ kết thúc. cấm

Định nghĩa thuộc tính

gõ = văn bản. mật khẩu mở khóa. hộp kiểm. Đài. Gửi đi. cài lại. tập tin. ẩn giấu. hình ảnh. button [CI]Thuộc tính này chỉ định loại điều khiển để tạo. Giá trị mặc định cho thuộc tính này là "văn bản". name = cdata [CI]Thuộc tính này gán tên điều khiển. value = cdata [CA]Thuộc tính này chỉ định giá trị ban đầu của điều khiển. Nó là tùy chọn trừ khi thuộc tính loại có giá trị "radio" hoặc "hộp kiểm". size = cdata [CN]Thuộc tính này cho tác nhân người dùng biết chiều rộng ban đầu của điều khiển. Chiều rộng được tính bằng pixel trừ khi thuộc tính loại có giá trị "văn bản" hoặc "mật khẩu". Trong trường hợp đó, giá trị của nó đề cập đến số ký tự [số nguyên]. maxlength = number [CN]Khi thuộc tính loại có giá trị "văn bản" hoặc "mật khẩu", thuộc tính này chỉ định số lượng ký tự tối đa mà người dùng có thể nhập. Con số này có thể vượt quá kích thước được chỉ định, trong trường hợp đó, tác nhân người dùng nên cung cấp cơ chế cuộn. Giá trị mặc định cho thuộc tính này là số lượng không giới hạn. đã chọn [CI]Khi thuộc tính loại có giá trị "radio" hoặc "hộp kiểm", thuộc tính boolean này chỉ định rằng nút đang bật. Tác nhân người dùng phải bỏ qua thuộc tính này cho các loại điều khiển khác. src = uri [CT]Khi thuộc tính type có giá trị "hình ảnh", thuộc tính này chỉ định vị trí của hình ảnh sẽ được sử dụng để trang trí nút gửi đồ họa

Các thuộc tính được xác định ở nơi khác

Loại điều khiển được xác định bởi phần tử INPUT phụ thuộc vào giá trị của thuộc tính loại

textTạo điều khiển nhập văn bản một dòng. mật khẩuGiống như "văn bản", nhưng văn bản đầu vào được hiển thị theo cách ẩn các ký tự [e. g. , một dãy dấu hoa thị]. Loại điều khiển này thường được sử dụng cho đầu vào nhạy cảm như mật khẩu. Lưu ý rằng giá trị hiện tại là văn bản do người dùng nhập, không phải văn bản do tác nhân người dùng hiển thị

Ghi chú. Các nhà thiết kế ứng dụng nên lưu ý rằng cơ chế này chỉ cung cấp khả năng bảo vệ an ninh nhẹ. Mặc dù mật khẩu được che dấu bởi các tác nhân người dùng từ những người quan sát bình thường, nhưng nó được truyền đến máy chủ ở dạng văn bản rõ ràng và bất kỳ ai có quyền truy cập mạng ở mức độ thấp đều có thể đọc được

hộp kiểmTạo hộp kiểm. radioTạo nút radio. submitTạo nút gửi. imageTạo nút gửi đồ họa. Giá trị của thuộc tính src chỉ định URI của hình ảnh sẽ trang trí nút. Vì lý do truy cập, tác giả nên cung cấp văn bản thay thế cho hình ảnh thông qua thuộc tính alt

Khi một thiết bị trỏ được sử dụng để nhấp vào hình ảnh, biểu mẫu sẽ được gửi và tọa độ nhấp được chuyển đến máy chủ. Giá trị x được đo bằng pixel từ bên trái của hình ảnh và giá trị y tính bằng pixel từ trên cùng của hình ảnh. Dữ liệu đã gửi bao gồm tên. x=x-giá trị và tên. y=y-value trong đó "tên" là giá trị của thuộc tính tên và giá trị x và giá trị y lần lượt là các giá trị tọa độ x và y

Nếu máy chủ thực hiện các hành động khác nhau tùy thuộc vào vị trí được nhấp, người dùng trình duyệt phi đồ họa sẽ gặp bất lợi. Vì lý do này, các tác giả nên xem xét các phương pháp thay thế

  • Sử dụng nhiều nút gửi [mỗi nút có hình ảnh riêng] thay cho một nút gửi đồ họa. Tác giả có thể sử dụng biểu định kiểu để kiểm soát vị trí của các nút này
  • Sử dụng bản đồ hình ảnh phía máy khách cùng với tập lệnh
resetTạo nút đặt lại. buttonTạo nút nhấn. Tác nhân người dùng nên sử dụng giá trị của thuộc tính giá trị làm nhãn của nút. hiddenTạo điều khiển ẩn. fileTạo điều khiển chọn tệp. Tác nhân người dùng có thể sử dụng giá trị của thuộc tính giá trị làm tên tệp ban đầu

17. 4. 2 Ví dụ về các biểu mẫu chứa các điều khiển INPUT

Đoạn HTML mẫu sau xác định một biểu mẫu đơn giản cho phép người dùng nhập tên, họ, địa chỉ email và giới tính. Khi nút gửi được kích hoạt, biểu mẫu sẽ được gửi đến chương trình được chỉ định bởi thuộc tính hành động

 
    

First name:
Last name:
email:
Male
Female

Biểu mẫu này có thể được hiển thị như sau

%coreattrs, %i18n, %events -- type %InputType; TEXT -- what kind of widget is needed -- name CDATA #IMPLIED -- submit as part of form -- value CDATA #IMPLIED -- Specify for radio buttons and checkboxes -- checked [checked] #IMPLIED -- for radio buttons and check boxes -- disabled [disabled] #IMPLIED -- unavailable in this context -- readonly [readonly] #IMPLIED -- for text and passwd -- size CDATA #IMPLIED -- specific to each type of field -- maxlength NUMBER #IMPLIED -- max chars for text fields -- src %URI; #IMPLIED -- for fields with images -- alt CDATA #IMPLIED -- short description -- usemap %URI; #IMPLIED -- use client-side image map -- ismap [ismap] #IMPLIED -- use server-side image map -- tabindex NUMBER #IMPLIED -- position in tabbing order -- accesskey %Character; #IMPLIED -- accessibility key character -- onfocus %Script; #IMPLIED -- the element got the focus -- onblur %Script; #IMPLIED -- the element lost the focus -- onselect %Script; #IMPLIED -- some text was selected -- onchange %Script; #IMPLIED -- the element value was changed -- accept %ContentTypes; #IMPLIED -- list of MIME types for file upload -- > 0

vẫn sẽ khiến một giá trị được ghép nối với tên "mật khẩu vô hình" và được gửi cùng với biểu mẫu

Khi người dùng gửi một biểu mẫu [e. g. , bằng cách kích hoạt nút gửi], tác nhân người dùng xử lý nó như sau

Bước một. Xác định các điều khiển thành công

Bước hai. Xây dựng tập dữ liệu biểu mẫu

Tập dữ liệu biểu mẫu là một chuỗi các cặp tên điều khiển/giá trị hiện tại được tạo từ các điều khiển thành công

Bước thứ ba. Mã hóa tập dữ liệu biểu mẫu

Tập dữ liệu biểu mẫu sau đó được mã hóa theo loại nội dung được chỉ định bởi thuộc tính enctype của phần tử FORM

Bước bốn. Gửi bộ dữ liệu biểu mẫu được mã hóa

Cuối cùng, dữ liệu được mã hóa được gửi đến tác nhân xử lý được chỉ định bởi thuộc tính hành động bằng cách sử dụng giao thức được chỉ định bởi thuộc tính phương thức

Thông số kỹ thuật này không chỉ định tất cả các phương thức gửi hoặc loại nội dung hợp lệ có thể được sử dụng với các biểu mẫu. Tuy nhiên, tác nhân người dùng HTML 4 phải hỗ trợ các quy ước đã thiết lập trong các trường hợp sau

  • Nếu phương thức là "lấy" và hành động là một URI HTTP, thì tác nhân người dùng sẽ lấy giá trị của hành động, nối thêm `?' . Sau đó, tác nhân người dùng duyệt qua liên kết tới URI này. Trong trường hợp này, dữ liệu biểu mẫu được giới hạn mã ASCII
  • Nếu phương thức là "bài đăng" và hành động là một URI HTTP, thì tác nhân người dùng sẽ tiến hành giao dịch "bài đăng" HTTP bằng cách sử dụng giá trị của thuộc tính hành động và một thông báo được tạo theo loại nội dung được chỉ định bởi thuộc tính enctype

Đối với bất kỳ giá trị nào khác của hành động hoặc phương thức, hành vi không được chỉ định

Tác nhân người dùng sẽ hiển thị phản hồi từ các giao dịch HTTP "nhận" và "đăng"

Thuộc tính enctype của phần tử FORM chỉ định loại nội dung được sử dụng để mã hóa tập dữ liệu biểu mẫu để gửi tới máy chủ. Tác nhân người dùng phải hỗ trợ các loại nội dung được liệt kê bên dưới. Hành vi cho các loại nội dung khác là không xác định

Ngoài ra, vui lòng tham khảo phần thoát dấu và trong các giá trị thuộc tính URI

ứng dụng/x-www-form-urlencoded

Đây là loại nội dung mặc định. Các biểu mẫu được gửi với loại nội dung này phải được mã hóa như sau

  1. Tên và giá trị điều khiển được thoát. Các ký tự khoảng trắng được thay thế bằng `+', sau đó các ký tự dành riêng được thoát ra như được mô tả trong [RFC1738], phần 2. 2. Các ký tự không phải chữ và số được thay thế bằng `%HH', một dấu phần trăm và hai chữ số thập lục phân biểu thị mã ASCII của ký tự. Ngắt dòng được biểu diễn dưới dạng cặp "CR LF" [i. e. , `%0D%0A']
  2. Tên/giá trị điều khiển được liệt kê theo thứ tự chúng xuất hiện trong tài liệu. Tên được phân tách khỏi giá trị bằng `=' và các cặp tên/giá trị được phân tách bằng `&'

nhiều phần/biểu mẫu dữ liệu

Ghi chú. Vui lòng tham khảo [RFC2388] để biết thêm thông tin về tệp tải lên, bao gồm các vấn đề về khả năng tương thích ngược, mối quan hệ giữa "nhiều phần/biểu mẫu dữ liệu" và các loại nội dung khác, các vấn đề về hiệu suất, v.v.

Vui lòng tham khảo phụ lục để biết thông tin về các vấn đề bảo mật cho các biểu mẫu

Loại nội dung "application/x-www-form-urlencoded" không hiệu quả để gửi số lượng lớn dữ liệu nhị phân hoặc văn bản chứa các ký tự không phải ASCII. Loại nội dung "multipart/form-data" nên được sử dụng để gửi biểu mẫu chứa tệp, dữ liệu không phải ASCII và dữ liệu nhị phân

Nội dung "dữ liệu nhiều phần/biểu mẫu" tuân theo các quy tắc của tất cả các luồng dữ liệu MIME nhiều phần như được nêu trong [RFC2045]. Định nghĩa "multipart/form-data" có sẵn tại sổ đăng ký [IANA]

Thông báo "nhiều phần/biểu mẫu dữ liệu" chứa một loạt các phần, mỗi phần đại diện cho một điều khiển thành công. Các bộ phận được gửi đến tác nhân xử lý theo cùng thứ tự các điều khiển tương ứng xuất hiện trong luồng tài liệu. Ranh giới một phần không được xuất hiện trong bất kỳ dữ liệu nào;

Như với tất cả các loại MIME nhiều phần, mỗi phần có tiêu đề "Kiểu nội dung" tùy chọn mặc định là "văn bản/đơn giản". Tác nhân người dùng phải cung cấp tiêu đề "Loại nội dung", kèm theo tham số "bộ ký tự"

Mỗi phần dự kiến ​​​​sẽ chứa

  1. tiêu đề "Bố trí nội dung" có giá trị là "dữ liệu biểu mẫu"
  2. một thuộc tính tên chỉ định tên điều khiển của điều khiển tương ứng. Tên điều khiển ban đầu được mã hóa trong bộ ký tự không phải ASCII có thể được mã hóa bằng phương pháp được nêu trong [RFC2045]

Do đó, ví dụ, đối với điều khiển có tên "mycontrol", phần tương ứng sẽ được chỉ định



INPUT - O EMPTY              -- form control -->
%attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- what kind of widget is needed --
  name        CDATA          #IMPLIED  -- submit as part of form --
  value       CDATA          #IMPLIED  -- Specify for radio buttons and checkboxes --
  checked     [checked]      #IMPLIED  -- for radio buttons and check boxes --
  disabled    [disabled]     #IMPLIED  -- unavailable in this context --
  readonly    [readonly]     #IMPLIED  -- for text and passwd --
  size        CDATA          #IMPLIED  -- specific to each type of field --
  maxlength   NUMBER         #IMPLIED  -- max chars for text fields --
  src         %URI;          #IMPLIED  -- for fields with images --
  alt         CDATA          #IMPLIED  -- short description --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  ismap       [ismap]        #IMPLIED  -- use server-side image map --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  onselect    %Script;       #IMPLIED  -- some text was selected --
  onchange    %Script;       #IMPLIED  -- the element value was changed --
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  >
1

Như với tất cả các lần truyền MIME, "CR LF" [i. e. , `%0D%0A'] được sử dụng để phân tách các dòng dữ liệu

Mỗi phần có thể được mã hóa và tiêu đề "Mã hóa truyền nội dung" được cung cấp nếu giá trị của phần đó không tuân theo mã hóa [7BIT] mặc định [xem [RFC2045], phần 6]

Nếu nội dung của tệp được gửi cùng với biểu mẫu, đầu vào tệp phải được xác định theo loại nội dung thích hợp [e. g. , "application/octet-stream"]. Nếu nhiều tệp được trả về do kết quả của một mục nhập biểu mẫu, chúng sẽ được trả về dưới dạng "nhiều phần/hỗn hợp" được nhúng trong "nhiều phần/dữ liệu biểu mẫu"

Tác nhân người dùng nên cố gắng cung cấp tên tệp cho mỗi tệp đã gửi. Tên tệp có thể được chỉ định bằng tham số "tên tệp" của 'Bố trí nội dung. tiêu đề dữ liệu biểu mẫu' hoặc, trong trường hợp có nhiều tệp, trong phần 'Bố trí nội dung. file' tiêu đề của subpart. Nếu tên tệp của hệ điều hành của khách hàng không ở dạng US-ASCII, thì tên tệp có thể được mã hóa gần đúng hoặc được mã hóa bằng phương pháp [RFC2045]. Điều này thuận tiện cho những trường hợp, chẳng hạn như các tệp đã tải lên có thể chứa các tham chiếu đến nhau [e. g. , tệp TeX và tệp ". sty" mô tả phong cách phụ trợ]

Ví dụ sau minh họa mã hóa "multipart/form-data". Giả sử chúng ta có dạng sau



INPUT - O EMPTY              -- form control -->
%attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- what kind of widget is needed --
  name        CDATA          #IMPLIED  -- submit as part of form --
  value       CDATA          #IMPLIED  -- Specify for radio buttons and checkboxes --
  checked     [checked]      #IMPLIED  -- for radio buttons and check boxes --
  disabled    [disabled]     #IMPLIED  -- unavailable in this context --
  readonly    [readonly]     #IMPLIED  -- for text and passwd --
  size        CDATA          #IMPLIED  -- specific to each type of field --
  maxlength   NUMBER         #IMPLIED  -- max chars for text fields --
  src         %URI;          #IMPLIED  -- for fields with images --
  alt         CDATA          #IMPLIED  -- short description --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  ismap       [ismap]        #IMPLIED  -- use server-side image map --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  onselect    %Script;       #IMPLIED  -- some text was selected --
  onchange    %Script;       #IMPLIED  -- the element value was changed --
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  >
2

Nếu người dùng nhập "Larry" trong kiểu nhập văn bản và chọn tệp văn bản "file1. txt", tác nhân người dùng có thể gửi lại dữ liệu sau



INPUT - O EMPTY              -- form control -->
%attrs;                              -- %coreattrs, %i18n, %events --
  type        %InputType;    TEXT      -- what kind of widget is needed --
  name        CDATA          #IMPLIED  -- submit as part of form --
  value       CDATA          #IMPLIED  -- Specify for radio buttons and checkboxes --
  checked     [checked]      #IMPLIED  -- for radio buttons and check boxes --
  disabled    [disabled]     #IMPLIED  -- unavailable in this context --
  readonly    [readonly]     #IMPLIED  -- for text and passwd --
  size        CDATA          #IMPLIED  -- specific to each type of field --
  maxlength   NUMBER         #IMPLIED  -- max chars for text fields --
  src         %URI;          #IMPLIED  -- for fields with images --
  alt         CDATA          #IMPLIED  -- short description --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  ismap       [ismap]        #IMPLIED  -- use server-side image map --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  accesskey   %Character;    #IMPLIED  -- accessibility key character --
  onfocus     %Script;       #IMPLIED  -- the element got the focus --
  onblur      %Script;       #IMPLIED  -- the element lost the focus --
  onselect    %Script;       #IMPLIED  -- some text was selected --
  onchange    %Script;       #IMPLIED  -- the element value was changed --
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  >
3

Nếu người dùng đã chọn tệp [hình ảnh] thứ hai "file2. gif", tác nhân người dùng có thể xây dựng các phần như sau

Các biểu mẫu được tạo trong HTML như thế nào?

Các thành phần được sử dụng trong biểu mẫu HTML là hộp kiểm, hộp nhập liệu, nút radio, nút gửi, v.v. Sử dụng các yếu tố này, thông tin của người dùng được gửi trên máy chủ web. Thẻ biểu mẫu được sử dụng để tạo biểu mẫu HTML .

Điều gì xảy ra khi bạn gửi biểu mẫu HTML?

Hầu hết các biểu mẫu HTML đều có nút gửi ở cuối biểu mẫu. Khi tất cả các trường trong biểu mẫu đã được điền vào, người dùng nhấp vào nút gửi để ghi lại dữ liệu biểu mẫu. Hành vi tiêu chuẩn là thu thập tất cả dữ liệu đã được nhập vào biểu mẫu và gửi dữ liệu đó đến một chương trình khác để xử lý .

Biểu mẫu web hoạt động như thế nào?

Biểu mẫu web là các trang mà người dùng của bạn yêu cầu bằng trình duyệt của họ . Các trang này có thể được viết bằng cách sử dụng kết hợp HTML, tập lệnh máy khách, điều khiển máy chủ và mã máy chủ.

Chủ Đề