2012-07-28 71 views
5

Vì vậy, tôi có vào nút trông như thế này nộp:javascript/jquery vô hiệu hóa nút gửi trên nhấp chuột, ngăn chặn đôi nộp

<a href="#" id="submitbutton" 
onClick="document.getElementById('UploaderSWF').submit();"> 
<img src="../images/user/create-product.png" border="0" /></a> 

Khi tôi nhấp đúp chuột nó trình đôi rõ ràng, và vấn đề là tôi m lưu thông tin trong cơ sở dữ liệu vì vậy tôi sẽ có thông tin công bố ở đó, và tôi không muốn điều đó. uploader này sử dụng đèn flash và javscript và đây là một chút mảnh mã có liên quan đến điều nộp (nếu nó giúp)

$.fn.agileUploaderSubmit = function() { 
    if($.browser.msie && $.browser.version == '6.0') { 
     window.document.agileUploaderSWF.submit(); 
    } else { 
     document.getElementById('agileUploaderSWF').submit(); 
     return false; 
    } 
} 

Cảm ơn các bạn. Tôi đánh giá cao sự giúp đỡ của bạn. Điều này thực sự là một cái gì đó tôi đã không thể làm bản thân mình bởi vì tôi có một chút kinh nghiệm với js và tôi không thực sự biết làm thế nào để làm công cụ. THANKS.

Trả lời

8

Hãy thử điều này snipped:

$('#your_submit_id').click(function(){ 
    $(this).attr('disabled'); 
}); 

chỉnh sửa 1

Ồ, trong trường hợp của bạn nó là một liên kết và nút không nộp ...

var submitted = false; 

$.fn.agileUploaderSubmit = function() { 
    if (false == submitted) 
    { 
     submitted = true; 

     if($.browser.msie && $.browser.version == '6.0') { 
      window.document.agileUploaderSWF.submit(); 
     } else { 
      document.getElementById('agileUploaderSWF').submit(); 
     } 
    } 

    return false; 
} 

chỉnh sửa 2

Để đơn giản hóa việc này, hãy thử cách này:

<!doctype html> 

<html dir="ltr" lang="en"> 

<head> 

<meta charset="utf-8" /> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script type="text/javascript"> 
<!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     $('#yourSubmitId').click(function() 
     { 
      $(this).attr('disabled',true); 

      /* your submit stuff here */ 

      return false; 
     }); 
    }); 
//--><!]]> 
</script> 

</head> 
<body> 

<form id="yourFormId" name="yourFormId" method="post" action="#"> 
    <input type="image" id="yourSubmitId" name="yourSubmitId" src="yourImage.png" alt="Submit" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

</body> 
</html> 

Sử dụng các thành phần biểu mẫu, như <input type="image" />, để gửi biểu mẫu không phải là liên kết bình thường.

Điều này hoạt động tốt!

Hãy xem jQuery.post() để gửi biểu mẫu của bạn.

Chúc may mắn.

chỉnh sửa 3

này hoạt động tốt đối với tôi quá:

<!doctype html> 

<html dir="ltr" lang="en"> 

<head> 

<meta charset="utf-8" /> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script type="text/javascript"> 
<!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     var agileUploaderSWFsubmitted = false; 

     $('#submitbutton').click(function() 
     { 
      if (false == agileUploaderSWFsubmitted) 
      { 
       agileUploaderSWFsubmitted = true; 

       //console.log('click event triggered'); 

       if ($.browser.msie && $.browser.version == '6.0') 
       { 
        window.document.agileUploaderSWF.submit(); 
       } 
       else 
       { 
        document.getElementById('agileUploaderSWF').submit(); 
       } 
      } 

      return false; 
     }); 
    }); 
//--><!]]> 
</script> 

</head> 
<body> 

<form id="agileUploaderSWF" name="agileUploaderSWF" method="post" action="http://your.action/script.php"> 
    <input type="text" id="agileUploaderSWF_text" name="agileUploaderSWF_text" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

<a href="#" id="submitbutton"><img src="../images/user/create-product.png" border="0" /></a>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

</body> 
</html> 

Hy vọng điều này giúp.

+0

Cảm ơn tôi sẽ thử. – inrob

+0

Xin chào Raisch.Cảm ơn vì giải pháp của bạn. Tôi đã áp dụng mã thứ hai của bạn và nó không thực sự hoạt động. Vẫn gửi nhiều lần. Tôi có nên áp dụng khối mã đầu tiên không? – inrob

+0

@bornie - Không sao, vì vậy bạn có thể chấp nhận câu trả lời này. :-) – Raisch

4

Thêm dòng sau vào onclick:

onclick="document.getElementById('submitbutton').disabled = true;document.getElementById('UploaderSWF').submit();" 

Điều đó nói rằng, bạn sẽ phải xử lý này đôi nộp ngăn chặn ở phía máy chủ cũng có.

+0

Cảm ơn tôi sẽ thử nó. Không có vấn đề với phía máy chủ. Tôi có thể làm điều đó, tôi biết rằng tôi không thể dựa vào js chỉ vì đôi khi người dùng vô hiệu hóa hỗ trợ JavaScript trên trình duyệt của họ. – inrob

+0

Người dùng này đang sử dụng jquery .. Tôi không thấy cần cho thuộc tính onClick hoặc document.getElementById. – Daedalus

+0

@bornie, tôi đã chỉnh sửa. Nó được cho là 'document.getElementById ('' ** 'submitbutton' **'') .disabled' – Nivas

-1

này sẽ vô hiệu hóa tất cả các trình nút và liên kết với các lớp nộp hoặc thuộc tính dữ liệu nộp trong một hình thức nếu được nhấp:

$(document).ready(function() { 
    $('form').submit(function() { 
     $(this).find('input[type="submit"]').attr('disabled', true); 
     $(this).find('a[data-submit], a.submit').click(function() { 
      return false; 
     }); 
    } 
}); 

này sẽ tự động áp dụng cho mọi hình thức, bằng cách này. Nếu bạn chỉ muốn một số nhất định, hãy sử dụng id thay vì biểu mẫu. Bạn có lẽ hầu hết đã biết rằng, mặc dù.

+0

Vấn đề là nếu bạn có thể xem kỹ hơn, nút gửi không nằm trong phạm vi

. Nó được tách ra. Bạn nghĩ rằng mã của bạn vẫn còn hợp lệ? – inrob

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