2011-11-30 25 views
18

Tôi nhấp chuột vào một nút gửi sử dụng này:Nhấp vào một cụ nút gửi với JQuery

$('input[type=submit]').click(); 

Vấn đề là tôi có thêm rằng 1 nút gửi trên trang của mình vì vậy tôi cần phải nhắm mục tiêu nút gửi một cụ thể.

Tôi có thể làm như thế nào?

Trả lời

23

Nếu bạn biết số lượng đầu vào là submit và cái nào (theo thứ tự) bạn muốn kích hoạt một số click khi đó bạn có thể sử dụng cú pháp nth-child() để nhắm mục tiêu nó. Hoặc thêm một ID hoặc một lớp cho mỗi một phân tách chúng với nhau.

Lựa chọn các yếu tố bằng cách chỉ mục của họ:

$('input[type="submit"]:nth-child(1)').trigger('click');//selects the first one 
$('input[type="submit"]:nth-child(2)').trigger('click');//selects the second one 
$('input[type="submit"]:nth-child(100)').trigger('click');//selects the 100th one 

Thực tế, có một số cách để làm điều này bao gồm sử dụng .eq(): http://api.jquery.com/eq

Lựa chọn các yếu tố bằng id của họ:

<input type="submit" id="submit_1" /> 
<input type="submit" id="submit_2" /> 
<input type="submit" id="submit_100" /> 

<script> 
$('#submit_100').trigger('click'); 
</script> 

Note rằng .click() là viết tắt của .trigger('click').

+0

Có một lý do để thích longhand '.trigger (nghe tiếng 'click') 'so với tốc ký? – AntonChanning

+1

@AntonChanning Đó là một ưu tiên hơn bất kỳ thứ gì khác. Các hàm viết tắt là các trình bao bọc nên có rất ít chi phí khi gọi chúng nhưng tôi không thể tưởng tượng nó có tác động đáng chú ý nào. Tôi thích rằng biểu mẫu '.trigger ('click')' có tính mô tả hơn, giúp tôi dễ dàng đọc mã nhanh hơn. – Jasper

+0

Tôi đoán nó cũng hoạt động như một lời nhắc trực quan về cú pháp có thể được sử dụng cho bất kỳ loại sự kiện nào, bao gồm các loại sự kiện tùy chỉnh. – AntonChanning

4

Thêm id s vào mỗi nút và chọn id bằng jQuery.

Hoặc, nếu các hình thức có id s, sau đó chỉ cần nhắm vào mẫu và gửi nó như vậy:

$("#form-id").submit(); 
6

Nếu bạn thêm một dấu hiệu, giống như một id cụ thể hoặc lớp để input của bạn, bạn có thể làm bộ chọn của bạn cụ thể hơn. Ví dụ, nếu bạn cung cấp cho các nút bạn muốn ID của form-btn như thế này:

<input type="submit" id="form-btn" /> 

Bạn có thể chọn nó như thế này:

$('input[type=submit]#form-btn').click(); 

Hoặc chỉ:

$('#form-btn').click(); 
1

Way muộn để đảng, nhưng nếu nút nộp của bạn có tên:

$("input[name='submitbuttonname']").click(); 
0

hmm nó không thể làm việc với một hình thức phù thủy với điều này intacted

$("#renqform").validate().settings.ignore = ":disabled"; 
return $("#renqform").valid(); 
1

Một gợi ý khác!

Tôi đã có biểu mẫu có nhiều lần gửi, cũng có các thuộc tính giá trị khác nhau, vì vậy tôi không thể gửi biểu mẫu sau khi tôi đã thực hiện xác nhận được tạo sẵn của mình.

Thay vào đó, tôi đã thêm một vài nút ẩn mà tôi đã buộc phải nhấp vào sau khi tôi nhận được Có từ xác nhận của tôi.

Dưới đây là các nút:

<button id="email" name="email" type="submit" class="submit radius confirmation" value="all"><?php echo $this->__('Email Receipts to Selected'); ?></button> 
<button id="email-french" name="email-french" type="submit" class="submit radius confirmation" value="all"><?php echo $this->__('Email French Receipts to Selected'); ?></button> 
<button id="helper-email" name="email" type="submit" class="submit hide" value="all"></button> 
<button id="helper-email-french" name="email-french" type="submit" class="submit hide" value="all"></button> 

Và đây là jQuery:

<script type="text/javascript"> 
jQuery(function ($) { 
    $('[id^=email]').on('click', function (e) { 
     e.preventDefault(); 

     var button = $(this); 

     notify.confirm(<?php echo json_encode($this->__('Are you sure?')); ?>, function (ans) { 
      if (ans) { 
       $('#helper-' + button.attr('id')).click(); 
      } 
     }); 
    }); 
}); 
</script> 
Các vấn đề liên quan