2012-08-06 12 views
6

HTML là:Tôi cần chạy hai funcions onclick. Tôi không thể có được cả hai để làm việc ngay cả khi lồng nhau

<input name="submit" 
     type="submit" 
     class="button" 
     value="Click Here" 
     tabindex="13" 
     onclick="return ValidateForm();" /> 

Các ValidateForm() chức năng có tất cả các mẫu mã xác nhận bình thường. Chức năng khác mà tôi không thể có được để chạy (trừ bản thân nó hoạt động fine..example

<input name="submit" 
     type="submit" 
     class="button" 
     value="Click Here" 
     tabindex="13" 
     onclick="disDelay(this);" /> 

Tôi đã thử đặt cả hai sau khi onclick ... ví dụ

<input name="submit" 
     type="submit" 
     class="button" 
     value="Click Here" 
     tabindex="13" 
     onclick="return ValidateForm(); disDelay(this);" /> 

Tôi cũng đã cố gắng đặt một mã trong các chức năng tương tự nhưng không thành công.

chức năng disDelay() là

function disDelay(obj){ 
    obj.setAttribute('disabled','disabled'); 
    setTimeout(function(){obj.removeAttribute('disabled')},10000); 
} 

Nó sẽ được sử dụng như một sự chậm trễ để giữ cho các hình thức nhận được bản sao gửi từ nhiều lần nhấp chuột. Sự chậm trễ là 10 giây ngay bây giờ chỉ cho mục đích thử nghiệm. Tôi cần xác thực và trì hoãn để làm việc cùng nhau.

+1

'element.onclick = function() {function01(); function02(); }; 'không đặt sự kiện trên html: D – ZiTAL

+0

hành vi mà bạn đang quan sát là gì? – laker

+0

Nó sẽ không xác nhận hoặc trì hoãn khi tôi sử dụng không chính xác cả hai chức năng với onclick. Khi tôi chỉ sử dụng một trong các chức năng này hoặc cái khác thì nó hoạt động tốt nhưng tôi cần cả hai. – Allison

Trả lời

4

Trả về giá trị của hàm đầu tiên kết thúc trình xử lý nhấp chuột. Về cơ bản, đây là những gì bạn đang làm trong nỗ lực của bạn để kết hợp:

<input name="submit" type="submit" class="button" 
     value="Click Here" tabindex="13" 
     onclick="return submit_Click(this);" /> 

<script type="text/javascript"> 
    function submit_Click(sender) { 
     return ValidateForm(); 
     disDelay(sender); // !!! This call is unreachable !!! 
    } 
</script> 

Đây là một lựa chọn đơn giản để sửa chữa nó:

<input name="submit" type="submit" class="button" 
     value="Click Here" tabindex="13" 
     onclick="return submit_Click(this);" /> 

<script type="text/javascript"> 
    function submit_Click(sender) { 
     var r = ValidateForm(); 
     disDelay(sender); // It seems like you would only want to call this 
          // function if the form is validate, so there should 
          // probably be an if-statement surrounding it. However, 
          // I'll leave that up to you. 
     return r; 
    } 
</script> 
+0

Cảm ơn bạn rất nhiều! Nó có vẻ hoạt động hoàn hảo. – Allison

2

Bạn gần như đã có nó, chỉ cần đảo ngược thứ tự của hàm cuộc gọi.

<input name="submit" type="submit" class="button" value="Click Here" tabindex="13" onclick="disDelay(this); return ValidateForm(); " /> 

Trả lại từ ValidateForm sẽ khiến phần còn lại của mã không thể truy cập được vì nó phải là cuối cùng.

0

Trong chuỗi onclick của bạn disDelay (this) không được gọi vì bạn trả về phản hồi từ ValidateForm(), do đó câu lệnh thứ hai không bao giờ thực thi.

Nếu bắt buộc phải sử dụng thuộc tính onclick bên trong html, hãy thử:

<input name="submit" type="submit" class="button" value="Click Here" tabindex="13" onclick="disDelay(); return ValidateForm();" /> 
Các vấn đề liên quan