2012-04-30 31 views
7

Xin chào, tôi có biểu mẫu này mà tôi không muốn thực hiện tác vụ khi nút gửi được nhấp. Tất cả tôi muốn làm là thực hiện một chức năng tải dữ liệu vào một div. Bất kỳ ý tưởng ??Làm cách nào để vô hiệu hóa tác vụ gửi

<form method="POST" action="" id="search-form"> 
      <input type="text" name="keywords" /> 
      <input type="submit" value="Search" id="sButton" onclick="loadXMLDoc('file.xml')" /> 
</form> 
+1

bạn đã thử sử dụng jquery chưa? –

Trả lời

8
onclick="loadXMLDoc('file.xml'); return false;" 

hoặc thậm chí tốt hơn:

<script> 
    window.onload = function() { 
     document.getElementById("search-form").onsubmit = function() { 
      loadXMLDoc('file.xml'); 
      return false; 
     }; 
    }; 
</script> 

Thực hiện loadXMLDoc, bạn có thể sử dụng các mô-đun ajax trong jQuery. ví dụ:

function loadXMLDoc() { 
    $("div").load("file.xml"); 
} 

mã cuối cùng sử dụng jQuery:

<script> 
    $(function() { 
     $("#search-form").submit(function() { 
      $("div").load("file.xml"); 
      return false; 
     }); 
    }); 
</script> 
+0

Là 'e.preventDefault()' tốt hơn hay 'trả về false' tốt hơn trong trường hợp này? –

+0

'return false' là tốt hơn bởi vì nó ngăn chặn các hành vi mặc định của sự kiện ** và cũng ** ngăn chặn các trang từ bubbling lên. Lưu ý rằng điều này chỉ đúng trong các trình xử lý sự kiện jQuery. –

+0

Tôi thấy ... –

2

tôi nghĩ rằng bạn cần chức năng ajax để tải dữ liệu với trong div mà không cần tải lại trang

chuyển đổi loại hình đầu vào submit để button

<input type="button" value="Search" id="sButton" onclick="AjaxSend()" /> 

Ajax CAll:

<script type="text/javascript"> 
    function AjaxSend(){ 
     $.get('file.xml', function(data) { 
       $('div').html(data); 
      }); 
    } 
</script> 
+0

Bạn có nghĩa là onclick = "javascript: AjaxSend()" ... Tôi tự hỏi nếu nó hoạt động ở khắp mọi nơi ngay bây giờ. Nó nên, btw. – dkellner

+0

vâng, nó sẽ hoạt động ... – Dhamu

+0

Dù sao thì nó cũng hoạt động trong Chrome. – dkellner

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