2013-12-18 12 views
5

Napisałem przykładowy kod HTML i skryptu w następujący sposób: Po uruchomieniu tego kodu najpierw otrzymam ten alert, ale inny alert, gdy zmienię w cca przez naciśnięcie klawisza następnie przycisk nie wyświetla ostrzeżenia. Jak korzystać z tego pola tekstowego i włączać i wyłączać inne pola tekstowe.Sposób włączania i wyłączania pola tekstowego w 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

Przede wszystkim Twój html jest zepsuty. Możesz użyć wielu elementów wewnątrz etykiety, nie jest to miłe. A twoja etykieta nie spełnia swojego zadania, nie używasz atrybutu "for". – DontVoteMeDown

Odpowiedz

1

Nie jestem pewien, co chce zrobić, ale mogę pomóc dostać powiadomienie pracy. Zasadniczo nie korzystasz poprawnie z funkcji jQuery "on".

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

Jeden z poniższych zrobi co trzeba:

To będzie ogień, gdy pole tekstowe zostaje

$(document).ready(function() {  

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

To zadziała na 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(); 
    }); 
}); 

To, będzie strzelać pod keyup jak wpisanie

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

Zobacz demo na JsFiddle

Należy również zamknąć wejście:

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

Czy mogę używać jako takie naciśnięcie klawisza i zmienić również jak, jak użyłeś fokusu – jasim

+0

dziękuję u Jon za kod, który mi udostępniłeś ale rzecz jest w mojej przeglądarce, gdzie wykonuję to nie bierze żadnego wydarzenia z "na" więc nie mogę iść z tym kodem ..... to wyrzuca błąd jak "Uncaught TypeError: Can not call method 'on' of null flow.html? _flowId = viewReportFlow & standAlone = true & _flowId = viewReportFlow & ParentFolderUri =% 2Freports% ...: 1035 (funkcja anonimowa) flow.html? _flowId = viewReportFlow i 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

Jedyne co zmieniłem to jQuery na $. Nie wiesz, jak skonfigurować konflikt. Powinien jednak działać w wersji 1.7.1. może spróbuj ... jQuery (document) .ready (function() { alert ("cześć"); jQuery ("# ​​cca"). on ("focusout", "label.control input", funkcja (event) { alert ("Jestem pewien, że pole tekstowe zostało zmienione"); event.preventDefault(); }); }); –

1

Ty słuchasz na razie change, który nie zadziała, dopóki wejście traci ostrość . Biorąc pod uwagę, że podany kod uruchamia alert, gdy fokus opuszcza dane wejściowe (za pomocą karty lub kliknięcia), domyślam się, że spodziewałeś się odpowiedzi po wpisaniu, ale przed zmianą ostrości. Aby to osiągnąć, posłuchaj zdarzenia input.

Powiązane problemy