2013-07-16 17 views
12

Tôi muốn đặt một số hướng dẫn với liên kết - onclick gọi một tập lệnh hiển thị một hộp cảnh báo đơn giản. Nếu tôi đã làm như thế này ...Làm cách nào để ngăn tải lại bằng onclick mà không có "#"?

<label for="arquivo">Máximo de 1MB, observe os <a href="" onclick="ajudaUpload();">tipos permitidos</a>.</label> 

trang được nạp lại ngay cả với một sự trở lại sai sự thật, và nếu tôi đã làm như thế này ...

<label for="arquivo">Máximo de 1MB, observe os <a href="#" onclick="ajudaUpload();">tipos permitidos</a>.</label> 

với biểu tượng "#", trang được cuộn lên đầu và "#" được thêm vào chuỗi truy vấn. Có cách thứ ba để làm điều đó mà không cần tải lại, di chuyển và rác không?

+3

xóa href – Prisoner

+1

@Risoner là cần thiết cho khả năng sử dụng, như điều hướng bàn phím và kiểu liên kết mặc định – Izkata

+0

Rất có thể, bạn không nên sử dụng thuộc tính 'onclick' ngay từ đầu. –

Trả lời

24

Return sai sau khi cuộc gọi:

<a href="" onclick="ajudaUpload();return false;">tipos permitidos</a> 

Hoặc nếu chức năng của bạn trả về false thì bạn có thể trả lại kết quả của hàm:

<a href="" onclick="return ajudaUpload();">tipos permitidos</a> 

Nó không đủ để chỉ trả về false trong hàm , bạn cần thực sự trả về false từ trình xử lý nhấp chuột.

+0

Tôi đã làm một thử nghiệm trong Safari và hoạt động như dòng đầu tiên. Ngoài ra, không cần trả về false trong hàm. Nó seams trình duyệt bỏ qua giá trị trả về và chỉ sử dụng những gì bên trong onclick. – Gustavo

+0

Chỉnh sửa: Tôi đã làm một bài kiểm tra một lần nữa với dòng thứ hai và nó hoạt động quá, tôi chỉ quên sự trở lại trước khi cuộc gọi ... – Gustavo

+0

Vâng, điều quan trọng là sự kiện onclick cuối cùng trả về false. Nếu chỉ có hàm trả về false thì biểu thức sẽ chỉ được đánh giá và sự kiện nhấp chuột sẽ không trả lại bất cứ điều gì. – MrCode

3

Bạn có thể sử dụng phương pháp .preventDefault() hoặc trả về false hoặc xóa thẻ HREF tất cả cùng nhau. Hoặc chỉ nên làm việc tốt.

Vc nao deviar estar usando onclick dessa forma pra comecar. Ja eh bem chống lại e nao se usa assim mais.

+0

@Christian: Không, đó là một chức năng tiêu chuẩn, mặc dù một shim là cần thiết cho IE8. –

+0

@ebramtharwat: Tại sao bạn đăng liên kết tới tài liệu jQuery? –

+2

Tại sao bỏ phiếu xuống? http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation –

0

Hầu như mọi yếu tố đều hỗ trợ sự kiện onclick, vì vậy bạn có thể sử dụng thẻ b hoặc thẻ nút, ngay cả thẻ span. Sau đó, bạn có thể tạo kiểu cho nó giống như một liên kết (một thẻ), hoặc bất kỳ cách nào khác mà bạn muốn. Ví dụ:

<label for="arquivo">Máximo de 1MB, observe os <b onclick="ajudaUpload();">tipos permitidos</b>.</label> 
-1

Xóa yourf và cung cấp id cho thẻ của bạn. Sau đó, bằng cách sử dụng id bạn có thể hiển thị cảnh báo của bạn. ('#id'). click (function() {alert (message); trả về false; });

3
<a href="" onclick="return ajudaUpload()">tipos permitidos</a> 

và sau đó trả về false trong chức năng của bạn: '?'

function ajudaUpload() 
{ 
    ... 
    return false; 
} 
+0

Tại sao thậm chí bận tâm đối phó với giá trị 'return' của cuộc gọi hàm? Chỉ cần 'return false;' sau khi gọi hàm và nó sẽ làm điều tương tự, mà không cần tạo sự tách biệt – Ian

+0

Điều đó cũng giống nhau trong trường hợp này, nhưng bạn có thể muốn trả về true nếu một số điều kiện được đáp ứng. – Samurai

+0

Nó không hoạt động, sẽ tải lại, tại danh sách trên Safari. – Gustavo

2

cách Rất đơn giản để làm điều này là chỉ cần thêm (dấu hỏi) :)

F.e.

<a href="#?">Moiz Travadi</a> 
3

Bạn có thể sử dụng:

<a href = "javascript:void(0);" onclick="ajudaUpload();"> 

Thậm chí tôi đã bị mắc kẹt trên một vấn đề tương tự. Tôi muốn sử dụng chức năng onclick nhưng trang sẽ tải lại, mà tôi không muốn. Tôi đã cố gắng href = "javascript: void (0);" va no đa hoạt động.

+0

Thú vị! Không chắc chắn nếu là thường xuyên sử dụng javascript như một tài liệu tham khảo, nhưng có một cơ hội của onclick không trả lại Boolean nếu nó bị treo vì lý do nào đó, và trong trường hợp này, việc tải lại được thực hiện. Điều này có thể ngăn chặn hack để thực hiện tải lại, nó có giá trị để thử. – Gustavo

+0

câu trả lời được chấp nhận không hoạt động 4 tôi - sẽ vẫn tải lại, điều này đã làm, tự hỏi tại sao. –

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