2013-12-18 28 views
5

Tôi đã viết mã mẫu html và tập lệnh như sau: Khi tôi thực thi mã này trước tiên tôi sẽ nhận được lời chào cảnh báo đó nhưng cảnh báo khác khi tôi thay đổi tại cca bằng cách nhấn tab sau đó nó không hiển thị cảnh báo. Cách sử dụng hộp văn bản đó và bật và tắt các trường văn bản khác của nó.Làm thế nào để kích hoạt hộp văn bản và vô hiệu hóa trong jquery

HTML:

<div id="cca" class="leaf"> 
    <label class="control input text" title=""> 
     <span class="wrap">cca</span> 
     <input class="" type="text" value="[Null]"> 
     <span class="warning"></span> 
    </label> 
</div> 

JS:

jQuery(document).ready(function() {   
    alert("hello");   
    jQuery("#cca label.control input").on('change', function (event) { 
     alert('I am pretty sure the text box changed'); 
     event.preventDefault(); 
    }); 
}); 
+0

Trước hết html của bạn bị hỏng. Bạn có thể sử dụng nhiều yếu tố bên trong nhãn, không đẹp. Và nhãn của bạn không làm mục đích của nó, bạn không sử dụng thuộc tính 'for'. – DontVoteMeDown

Trả lời

1

Tôi không thực sự chắc chắn những gì bạn đang cố gắng để làm nhưng tôi có thể giúp được những lao động tỉnh táo. Về cơ bản bạn không sử dụng đúng chức năng jQuery "on".

$('#thisNeedsToBeContainer').on('focusout', '#elemToBindEventTo', function (event)....

Một trong những điều sau đây sẽ làm những gì bạn cần:

này sẽ cháy khi hộp văn bản còn lại

$(document).ready(function() {  

    alert("hello");   
    $("#cca").on('focusout', 'label.control input', function (event) { 
     alert('I am pretty sure the text box changed'); 
     event.preventDefault(); 
    }); 
}); 

này, sẽ kích hoạt trên change

$(document).ready(function() {  
    alert("hello");   
    $("#cca").on('change', 'label.control input', function (event) { 
     alert('I am pretty sure the text box changed'); 
     event.preventDefault(); 
    }); 
}); 

Điều này, sẽ kích hoạt trên keyup như gõ

$(document).ready(function() { 
    alert("hello");   
    $("#cca").on('onkeyup', 'label.control input', function (event) { 
     alert('I am pretty sure the text box changed'); 
     event.preventDefault(); 
    }); 
}); 

Xem Demo trên JsFiddle

Bạn cũng nên đóng đầu vào của bạn:

<input class="" type="text" value="[Null]"/> 
+0

Tôi có thể dùng phím bấm và thay đổi đó cũng giống như cách bạn đã sử dụng tiêu điểm – jasim

+0

cảm ơn u Jon cho mã bạn đã chia sẻ với tôi nhưng điều này nằm trong trình duyệt của tôi khi đang thực thi nó không tham gia bất kỳ sự kiện nào với "on" tôi không thể đi với mã đó ..... nó ném lỗi như "Uncaught TypeError: Không thể gọi phương thức 'trên' của null flow.html? _flowId = viewReportFlow & standAlone = true & _flowId = viewReportFlow & ParentFolderUri =% 2Freports% ...: 1035 (chức năng ẩn danh) flow.html? _flowId = viewReportFlow & standAlone = true & _flowId = viewReportFlow & ParentFolderUri =% 2Freports%…: 1035 n jquery-1.7.1.min.js: 2 o.fireWith jquery-1.7.1.min.js: 2 e.extend .ready jquery-1.7.1.min.js: 2 c.addEventListener.B " – jasim

+0

Điều duy nhất tôi thay đổi là jQuery thành $. Không chắc chắn cách bạn không thiết lập xung đột. Nên làm việc trong 1.7.1 mặc dù. có thể thử ... jQuery (tài liệu) .ready (function() { alert ("hello"); jQuery ("# ​​cca"). on ('focusout', 'label.control input', function (event) { cảnh báo ('Tôi chắc chắn hộp văn bản đã thay đổi'); event.preventDefault(); }); }); –

1

Bạn đang nghe cho sự kiện change, mà sẽ không bắn cho đến khi đầu vào mất tập trung . Cho rằng mã bạn đã cung cấp không kích hoạt cảnh báo khi tiêu điểm rời khỏi đầu vào (theo tab hoặc nhấp), tôi đoán bạn đang mong đợi phản hồi sau khi nhập nhưng trước khi thay đổi tiêu điểm. Để thực hiện điều đó, hãy nghe sự kiện input thay thế.

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