2012-08-30 35 views
6

Có cách nào để gửi biểu mẫu hiện hành, trong đó tôi có liên kết href như thế nàyLàm thế nào để gửi biểu mẫu sử dụng javascript với "này"

<a href="javascript:;" onclick="this.submit();">Save</a> 

Tôi muốn sử dụng cùng một mã evrywhere vì vậy tôi có thể' t sử dụng bất kỳ id hoặc lớp

+1

Tại sao bạn muốn làm điều này? Nó là một thực hành tốt để đặt mã của bạn trong tập tin javascript riêng biệt. Có lý do nào khiến bạn không thể tách biệt đánh dấu khỏi kịch bản không? – BentOnCoding

Trả lời

10

Gửi hình thức sử dụng this.form.submit()

tức là trong trường hợp của bạn, nó sẽ giống như

<a href="#" onclick="this.form.submit();">Save</a> 

Nhưng nó rất khuyến khích sử dụng tên hình thức

khác nếu bạn cảm thấy thoải mái sử dụng jquery bạn cũng có thể sử dụng jquery closest chức năng

$(field).closest("form").submit(); 
+0

Không, nó không hoạt động: Không thể đọc thuộc tính 'submit' của undefined –

0

gì bạn muốn là:

<a href="javascript:;"onclick="document.forms.<formname>.submit();">Save</a> 

trên thực tế nó dường như làm việc khi <formname> được thay thế bằng id của hình thức cũng có.

Althoughy tôi sẽ khuyên bạn nghiên cứu thực hành được gọi là Unobtrusive Javascript

0

Giả sử bạn có n số hình thức trên trang của bạn. Bạn có thể gửi i+1 hình thức thứ bằng cách sử dụng:

document.forms[i].submit(); 

Vì vậy, nếu bạn chỉ có một, và muốn gửi vào liên kết nhấp chuột,

document.forms[0].submit(); 

nên giá trị onclick thuộc tính của bạn

+0

nhưng sau đó tôi cần phải mã diff cho mỗi href. Tôi có khoảng 30 tệp và tôi đang thay thế nút gửi bằng href với tập lệnh shell –

1
<a href="" onclick="!function(a){while(a&&a.nodeName!="FORM")a=a.parentNode;if(a)a.submit();}(this);"></a> 
+0

Mã đúng là: ''. – Paya

0

Bạn có thể thử mã này

<a href="" onkeypress="submit(this.form)"/> 
<script> 
    function submit(form) { 
     form.submit(); 
    } 
</script> 
0

Tôi sử dụng giải pháp này cho tên biểu mẫu không xác định:

function submitForm(originator) 
{ 
    var pN=originator.parentNode; 
    while (true) 
    { 
     if (pN&&pN.nodeName=='FORM') 
     { 
      pN.submit(); 
      break; 
     } 
     pN=pN.parentNode; 
    } 
} 

và bây giờ về sự kiện đối tượng của bất kỳ tài liệu chúng tôi có thể sử dụng chức năng này:

<div onclick="doSomething();submitForm(this)">test</div> 
Các vấn đề liên quan