2013-08-28 35 views
11

Tôi muốn ẩn biểu mẫu của mình khi tôi nhấp vào nút gửi. Mã của tôi như sau:document.getElementById ("test"). Style.display = "hidden" không hoạt động

<script type="text/javascript"> 
    function hide() { 
     document.getElementById("test").style.display = "hidden"; 
    } 
</script> 
<form method="post" id="test"> 
    <table width="60%" border="0" cellspacing="2" cellpadding="2"> 
     <tr style="background:url(../images/nav.png) repeat-x; color:#fff; font-weight:bold" 
     align="center"> 
      <td>Ample Id</td> 
      <td>Find</td> 
     </tr> 
     <tr align="center" bgcolor="#E8F8FF" style="color:#006"> 
      <td> 
       <input type="text" name="ampid" id="ampid" value="<?php echo $_POST['ampid'];?>" 
       /> 
      </td> 
      <td> 
       <input type="image" src="../images/btnFind.png" id="find" name="find" 
       onclick="javascript:hide();" /> 
      </td> 
     </tr> 
    </table> 
</form> 

Nhưng khi tôi nhấp vào nút "Tìm", biểu mẫu cụ thể đó sẽ không bị ẩn.

+6

Vì 'hiển thị' không có nội dung 'ẩn'. Thử 'none'. – M1K1O

+1

Mẹo: Đọc trên [addEventListener] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener). – elclanrs

+0

Và sau khi bạn khắc phục sự cố "không", biểu mẫu sẽ gửi như vậy trên trang tiếp theo, biểu mẫu sẽ được hiển thị lại ... – epascarello

Trả lời

3

Thay thế hidden bằng none. Xem MDN reference.

+0

ya tôi đã thử sử dụng không có gì nhưng không sử dụng – namratha

+2

@namratha Hãy thử lại. Bằng cách này là chính xác. –

4

Đặt thuộc tính hiển thị CSS thành none.

document.getElementById("test").style.display = "none"; 

Ngoài ra, bạn không cầnjavascript: cho thuộc tính onclick.

<input type="image" src="../images/btnFind.png" id="find" name="find" 
    onclick="hide();" /> 

Cuối cùng, hãy chắc chắn rằng bạn không có nhiều yếu tố với cùng một ID.

Nếu biểu mẫu của bạn không đến đâu, Phil đề nghị bạn nên ngăn chặn gửi biểu mẫu. Chỉ cần return false trong trình xử lý onsubmit.

<form method="post" id="test" onsubmit="return false;"> 

Nếu bạn muốn hình thức để gửi, nhưng ẩn div trên tải trang tiếp theo, bạn sẽ phải sử dụng server-side code để ẩn các yếu tố:

<script type="text/javascript"> 
function hide() { 
    document.getElementById("test").style.display = "none"; 
} 
window.onload = function() { 
    // if form was submitted, PHP will print the below, 
    // which runs function hide() on page load 
    <?= ($_POST['ampid'] != '') ? 'hide();' : '' ?> 
} 
</script> 
+0

Có thể muốn ngăn chặn hành động mặc định (gửi biểu mẫu) xảy ra quá – Phil

+0

@Phil người dùng không yêu cầu điều đó, có lẽ người dùng chỉ muốn ẩn phần tử gửi biểu mẫu? chúng tôi không nên đề xuất nội dung không được yêu cầu, để giữ câu trả lời ngắn gọn và súc tích. –

+0

Nhưng khi trang điều hướng đi (đến cùng một trang), bạn sẽ không thấy kết quả của tập lệnh. Trong thực tế, tôi muốn nói đó là chính xác những gì OP được nhìn thấy và giả định rằng các hình thức không được ẩn. – Phil

0

nó một yếu tố ngăn chặn, và bạn cần phải sử dụng none

document.getElementById("test").style.display="none" 

hidden được sử dụng cho visibility

+2

Xem ra các ký tự trích dẫn trong câu trả lời của bạn (ví dụ '' ') với mọi người ** sẽ ** sao chép và dán từ đây :) – Phil

0

bạn cần phải sử dụng display = none

giá trị ẩn được kết nối với attributet gọi visibility

do đó, mã của bạn sẽ giống như thế này

<script type="text/javascript"> 
function hide(){ 
document.getElementById("test").style.display="none"; 
} 
</script> 
+0

ya tôi đã thử sử dụng không có gì nhưng không sử dụng – namratha

+0

@namratha đặt cảnh báo vào hàm. Tôi đặt cược nó không được gọi. nếu bạn đang sử dụng sự kiện onclick bạn không cần phải viết javascript: hide() đơn giản ẩn(); là đủ – Fixus

+0

tôi đã sử dụng chức năng cảnh báo và kiểm tra được gọi nhưng phần biểu mẫu đó không bị ẩn khi tôi nhấp vào nút tìm kiếm – namratha

0

này nên nó thử nó.

document.getElementById("test").style.display="none"; 
0

bạn có thể sử dụng một cái gì đó như thế này ....div chứa

<script type="text/javascript"> 
function hide(){ 
document.getElementById("test").innerHTML.style.display="none"; 
} 
</script> 
<div id="test"> 
<form method="post" > 

<table width="60%" border="0" cellspacing="2" cellpadding="2" > 
    <tr style="background:url(../images/nav.png) repeat-x; color:#fff; font-weight:bold" align="center"> 
    <td>Ample Id</td> 
    <td>Find</td> 
    </tr> 

    <tr align="center" bgcolor="#E8F8FF" style="color:#006" > 
    <td><input type="text" name="ampid" id="ampid" value="<?php echo $_POST['ampid'];?>" /></td> 
    <td><input type="image" src="../images/btnFind.png" id="find" name="find" onclick="javascript:hide();"/></td> 
    </tr> 

</table> 

</form> 
</div> 
0

Qua Javascript

document.getElementById("test").style.display="none"; 

Qua Jquery

$('#test').hide(); 
24

Nó phải là một trong hai

document.getElementById("test").style.display = "none"; 

hoặc

document.getElementById("test").style.visibility = "hidden"; 

tùy chọn thứ hai sẽ hiển thị một số khoảng trống nơi hình thức ban đầu hiện tại, nơi như tùy chọn đầu tiên không

2

Có hai cách để làm điều này.

Hầu hết các câu trả lời đều chỉ ra rằng style.display không có giá trị nào được gọi là "ẩn". Nó không phải là không.

Nếu bạn muốn sử dụng "ẩn", cú pháp phải như sau.

object.style.visibility="hidden" 

Sự khác biệt giữa hai thuộc tính hiển thị = "ẩn" sẽ chỉ ẩn nội dung của bạn nhưng giữ nguyên vị trí trên trang. Trong khi hiển thị = "none" sẽ ẩn phần tử hoàn chỉnh của bạn và phần còn lại của các phần tử trên trang sẽ lấp đầy khoảng trống được tạo bởi nó.

Kiểm tra này illustration

3

Sử dụng jQuery:

$('#test').hide(); 

Sử dụng Javascript:

document.getElementById("test").style.display="none"; 

Ném một lỗi "không thể đặt thuộc tính 'màn hình' không xác định"

S o, sửa chữa cho điều này sẽ là:

document.getElementById("test").style="display:none"; 

nơi mã html của bạn sẽ trông như thế này:

<div style="display:inline-block" id="test"></div> 
Các vấn đề liên quan