Truy vấn để thay đổi hành động biểu mẫu


117

Tôi có hai nút trong một biểu mẫu và hai trang khác nhau phải được gọi khi chúng được nhấp vào. khi nút1 được nhấp thì trang1 phải được tải và khi nút2 được nhấp thì trang2 phải được tải. Tôi biết cách thực hiện việc này trong javascript nhưng tôi không có manh mối nào về cách thực hiện việc này trong jquery. Có ai có thể giúp tôi không?

Câu trả lời:


181

Thử cái này:

$('#button1').click(function(){
   $('#formId').attr('action', 'page1');
});


$('#button2').click(function(){
   $('#formId').attr('action', 'page2');
});

28

jQuery chỉ là JavaScript, đừng nghĩ khác về nó! Giống như bạn làm trong JS 'bình thường', bạn thêm trình xử lý sự kiện vào các nút và thay đổi thuộc tính hành động của biểu mẫu. Trong jQuery, nó trông giống như sau:

$('#button1').click(function(){
   $('#your_form').attr('action', 'http://uri-for-button1.com');
});

Mã này giống nhau đối với nút thứ hai, bạn chỉ cần thay đổi id của nút và URI nơi biểu mẫu sẽ được gửi đến.


19

Sử dụng jQuery.attr()trong trình xử lý nhấp chuột của bạn:

$("#myform").attr('action', 'page1.php');

14

Vì lợi ích của sự đa dạng:

var actions = {input1: "action1.php", input2: "action2.php"};
$("#input1, #input2").click(function() {
    $(this).closest("form").attr("action", actions[this.id]);
});

14

Vui lòng xem câu trả lời này: https://stackoverflow.com/a/3863869/2096619

Trích dẫn Tamlyn :

jQuery (1.4.2) bị nhầm lẫn nếu bạn có bất kỳ phần tử biểu mẫu nào có tên là "action". Bạn có thể giải quyết vấn đề này bằng cách sử dụng các phương thức thuộc tính DOM hoặc đơn giản là tránh đặt các phần tử biểu mẫu có tên là "action".

<form action="foo">
  <button name="action" value="bar">Go</button>
</form>

<script type="text/javascript">
  $('form').attr('action', 'baz'); //this fails silently
  $('form').get(0).setAttribute('action', 'baz'); //this works
</script>

8
$('#button1').click(function(){
$('#myform').prop('action', 'page1.php');
});

0

Để thay đổi động giá trị hành động của biểu mẫu, bạn có thể thử mã dưới đây:

mã dưới đây là nếu bạn đang mở một hộp dailog nào đó và bên trong hộp dailog đó bạn có biểu mẫu và bạn muốn thay đổi hành động của nó. Tôi đã sử dụng hộp dailog Bootstrap và khi mở hộp dailog đó, tôi đang gán giá trị hành động cho biểu mẫu.

$('#your-dailog-id').on('show.bs.modal', function (event) {
    var link = $(event.relatedTarget);// Link that triggered the modal
    var cURL= link.data('url');// Extract info from data-* attributes
    $("#delUserform").attr("action", cURL);
});

Nếu bạn đang cố gắng thay đổi hành động biểu mẫu trên trang thông thường, hãy sử dụng mã bên dưới

$("#yourElementId").change(function() { 
  var action = <generate_action>;
  $("#formId").attr("action", action);
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.