2014-02-14 2 views
4

Я пытаюсь предупредить значение с помощью jquery, когда оно создано из кода javascript, значение генерируется в поле ввода, проблема jquery не может обнаружить изменения, команды i испытания являются «изменение, ввод», но когда я вручную ввести значение JQuery триггерыJquery on Input не работает с динамически вставленным значением

пример кода:

значение динамически генерируется на Javascript и нажал/вставлен в InputBox, значение не генерируется вручную javascript:

document.getElementById("displayDID").value = DisplayName ; 

HTML:

<input type="text" id="displayDID" /> 

JQuery:

$('#displayDID').on("input" ,function() { 
      var work = $(this).val(); 
      alert(work); 
     }); 

значение ид = "displayDID" изменения, но JQuery не может обнаружить его после выполнения.

образец скрипку http://jsfiddle.net/SU7bU/1/

+0

он работает отлично: http://jsfiddle.net/paRPL/1/ – caramba

+0

Что измениться «вход» в «KeyUp» если вы хотите предупредить все изменения или «изменить», если вы хотите предупредить об изменениях после фокуса – Pavlo

+0

, он отлично работает при ручном вводе, но когда значение не вытолкнуто из javascript – user3261755

ответ

0

Это потому, что вы добавили сценарий до ввода в ready.Due, к которому, событие не получает набор на том, что element.write код на документе готовый:

$(document).ready(function(){ 
$('#displayDID').on("input" ,function() { 
     var work = $(this).val(); 
     alert(work); 
    }); 
}) 

или использовать событие делегация:

$(document).on("input",'#displayDID' ,function() { 
     var work = $(this).val(); 
     alert(work); 
    }); 
+0

все еще не запускает jquery – user3261755

+0

вы можете создать скрипку ?? –

+0

http: // jsfiddle.net/SU7bU/1/ – user3261755

1
add trigger to it 

$('#gen').on('click',function() { 
    $('#field').val('val').trigger("change"); 
}); 


$(document).on("change",'#field' ,function() { 
    var work = $(this).val(); 
    alert(work); 

}); 

http://jsfiddle.net/ytexj/

+0

, пожалуйста, прочитайте описание, оно не запускается вручную, оно запускается системой. – user3261755

0

Хорошо, я предложит вам один ответ и посмотрим, решит ли он вашу проблему. Если вы используете keyup, и вы вставляете значение 3350, вы увидите 4 предупреждения, и я думаю, что вы хотите отображать только 1 предупреждение.

$(document).ready(function() { 
 
var interval; 
 
\t $("#variazioneAnticipo").on("input", function() { 
 
\t \t var variazioneAnticipo = $("#variazioneAnticipo").val(); 
 
\t \t clearInterval(interval); 
 
    interval = setTimeout(function(){ showValue(variazioneAnticipo) }, 1000); 
 
\t }); 
 
}); 
 

 
function showValue(value) { 
 
\t \t \t alert("ANTICIPO VARIATO: " + value); 
 
}
<input id="variazioneAnticipo" class="rightAlligned form-control" style="width: 60%" type="number" step="0.01" min="0" value="3" />

Я объясню, когда вы вводите что-либо на вход, вызовете SetTimeout в 1 сек, если нажать другую клавишу под это время, мы очищаем таймаут и мы triiger снова , поэтому у вас будет только 1 предупреждение через 1 секунду после последнего ввода.

Я надеюсь, что это поможет вам, и soyy за мой английский: D

Смежные вопросы