2010-09-24 36 views
13

Tôi muốn có một nhóm văn bản HTML <input> có thể chuyển thành màu xám (tắt) cùng một lúc. Tôi cũng muốn toàn bộ khu vực họ đang ở trong bằng cách nào đó được màu xám hoặc ít nhất là vô hình bị vô hiệu hóa. Tôi đã nhìn thấy những thứ như thế này được thực hiện trong các ứng dụng máy tính để bàn.Làm cách nào để tạo biểu mẫu HTML xám?

Bất kỳ ý tưởng nào về cách dễ dàng/thanh lịch để thực hiện? Tôi đang cố gắng tránh đặt từng thiết bị theo cách thủ công thành disabled="disabled" và cũng có khu vực xung quanh <input> cho biết rằng toàn bộ phần của biểu mẫu không thể chỉnh sửa được.

EDIT: Xin lỗi, tôi nên đề cập đến nhiều hơn một vài điều ...

  1. Mọi thứ đều địa phương. Tôi không sử dụng PHP hoặc ASP hoặc bất kỳ thứ gì như thế ... chỉ HTML, JavaScript và CSS. Ngoài ra không có jquery!
  2. Tôi muốn để bật/tắt tùy chọn "khu vực" động với JavaScript
  3. Nó không phải là một <form>, chỉ cần một loạt các <input> 's
+0

Bạn có muốn '' yếu tố vô hiệu hóa với HTML tĩnh hoặc động vô hiệu hóa với javascript hoặc một cái gì đó? Tôi đã khám phá các biểu mẫu động ở một mức độ nào đó trong [câu hỏi này] (http://stackoverflow.com/questions/3398603/how-to-create-a-dynamic-form-using-jquery/3408517#3408517); thậm chí còn tạo ra một [jQuery plugin] (http://github.com/macek/jquery-input-depends-on) cho nó. –

Trả lời

18

Tham số bị vô hiệu hóa = "bị vô hiệu hóa" là cách tiêu chuẩn để thực hiện điều này và bạn có thể sử dụng thứ gì đó như jQuery để tắt động tất cả các phần tử biểu mẫu có trong một fieldset (Cách nào là tiêu chuẩn nhóm các phần tử biểu mẫu liên quan) một cách nhanh chóng.

Hoặc bạn có thể đặt một phần div trong suốt trên đầu trường. Điều này cũng sẽ cung cấp một số ngăn chặn của các yếu tố hình thức từ nhấp chuột, nhưng sẽ không bảo vệ chống lại tabbing cho họ. Bạn vẫn nên tự vô hiệu hóa các phần tử biểu mẫu.

+1

Tôi đã thử tắt tất cả các yếu tố đầu vào khi gửi. Điều này dường như gây ra vấn đề với MVC3. Nó sẽ không đăng lại mô hình một cách chính xác khi tôi vô hiệu hóa mọi thứ trong biểu mẫu. – user1003221

+1

theo mặc định, các phần tử HTML bị vô hiệu hóa không truyền giá trị của chúng đến yêu cầu bài đăng. Sử dụng chỉ đọc nếu điều này không mong muốn – Filip

0

Bạn có thể bước qua tất cả các yếu tố hình thức và vô hiệu hóa chúng. Chưa được kiểm tra, nhưng thử một cái gì đó như thế này:

for (x=0; x<document.YOURFORM.elements.length; x++) { 
    document.YOURFORM.elements[x].disabled=true; 
} 
8
for(i=0; i<document.FormName.elements.length; i++) { 
    document.FormName.elements[i].disabled=true; 
} 
document.getElementById("surroundingarea").style.backgroundColor = "#CCCCCC"; 

vòng qua các yếu tố của hình thức với tên FormName và vô hiệu hóa từng phần tử .. sau đó thay đổi màu nền của các yếu tố xung quanh

2

Bạn có thể chỉ cần sử dụng jQuery để vô hiệu hóa tất cả các dạng yếu tố trong khu vực đó, như:


    //assuming that area is a div element with id lets say disabled-area 
    $(document).ready(function(){ 
    $("#disabled-area input").attr("disabled", "disabled"); 
    }); 

tôi đã không kiểm tra nó, vì vậy tôi hy vọng điều này sẽ làm việc :)

+0

Mã này đang hoạt động. – Samarland

2

Nếu bạn nói bạn không muốn chơi với thuộc tính "bị vô hiệu hóa" - thì bạn cũng có thể định vị một số DIV trong suốt trên biểu mẫu HTML, mà (theo kiểu đúng) có thể làm cho dạng trông bị vô hiệu hóa - người dùng sẽ có thể thấy hình thức, nhưng không bấm/nhập bất kỳ thông tin vào nó ... Sau đó, dựa trên một số sự kiện, bạn chỉ đơn giản là có thể loại bỏ/ẩn DIV này với JS và làm cho hình thức "kích hoạt".

+0

Tôi thích ý tưởng này để "tô xám" khu vực. Làm thế nào để làm cho một div trôi nổi trên một khu vực khác? Tôi chỉ thực hiện các div trực tuyến trước ... –

+0

Bạn có thể làm điều đó bằng cách sử dụng định vị CSS tuyệt đối/tương đối. Có thể điều chỉnh chúng thông qua JS trực tiếp hoặc sử dụng một số thư viện JS như jQuery, làm cho mọi việc trở nên dễ dàng hơn ... – Laimoncijus

0

xin vui lòng lưu ý: nếu bạn làm khuyết tật>

the-yếu tố đầu vào sẽ không được truyền nếu người dùng gửi biểu mẫu.

những gì bạn muốn làm thay thế là:

<input type="text" name="surname" value="Korpela" readonly> 

nếu hình thức của bạn là bên trong một Liệu

<div style="background-color; grey;"> 

rằng cắt bánh?

https://www.cs.tut.fi/~jkorpela/forms/readonly.html

+0

Không nên chỉ đọc được = "true"? –

+0

Anh ta muốn biến nó thành màu xám. 'readonly' không làm điều đó, nó chỉ vô hiệu hóa điều khiển bàn phím. – Thielicious

0

Người dân ở đây có câu trả lời với các vòng - không cần. Sử dụng .children().

$('form').children().prop('disabled',true); 

jsfiddle

Các vấn đề liên quan