2013-04-10 5 views
0

DIV 내용을 확인할 때 DIV 내용이 변경되어 양식 필드가 있는지 확인합니다. 나는이 코드를 시도하고 있지만 응답하지 :JQuery DIV 내용 확인

$.fn.exists = function(){return this.length>0;} 
$("div.provider_name").live("change",function(){ 
    if ($('input[id=checkout_provider_checkout_moneyorder]').exists) 
    { 
     alert('Input field exist'); 
    } 
}); 

입력 필드 dynamicaly를 표시, 난이 특정 필드가 존재하는지 확인하기 위해 wnat 이유가 그래서.

+2

DIV 년대는'change' 이벤트를 필요는 없습니다. 이 문제를 해결하기 위해서는'DOMNodeInserted'와 같은 상위 수준의 DOM 요청이나 '돌연변이 관찰자'를 사용해야합니다. – Ohgodwhy

+0

참조 : http://stackoverflow.com/questions/1091661/detect-element-content-changes-with-jquery – Cristy

+0

또한 div의 내용을 실제로 변경할 때 변경 이벤트를 '실행'하지 않는 이유는 무엇입니까? – Cristy

답변

1

변경 이벤트는 모든 요소에서 사용할 수 없으므로 div 요소의 내용이 변경 되더라도 실행되지 않습니다.

변경 이벤트는 양식 요소에서 사용할 수 있습니다. 난 그냥 ID로 요소를 확인하고이 예에서는

var checkForInputTimer; 
var checkForInput = function() { 
    if ($("#checkout_provider_checkout_moneyorder").length > 0) { 
     window.clearInterval(checkForInputTimer); 
     alert("Do your processing here"); 
    } 
}; 

checkForInputTimer = window.setInterval(checkForInput, 2000); 

: 당신의 필요가 특정 폼 요소를 사용할 수있을 때 해결하는 것입니다 같은

그것은 당신이 간격을 사용하여 해당 검사 수, 보이는 ID는 고유해야한다는 점에서 가장 효율적인 검색입니다.

사용자 지정 이벤트를 만들 수도 있지만 div 요소를 업데이트하는 데 사용하는 코드를 사용하여 이벤트를 트리거해야한다는 것을 기억해야합니다. 나는 이것에 대한 JS Fiddle 만들었습니다

$('div.provider_name').bind('contentChanged', function(event, data) { 
    if ($('#checkout_provider_checkout_moneyorder').length > 0) { 
     alert('Do your processing here'); 
    } 
}); 

그리고 당신이 div를 업데이트 할 때마다, 당신은이 이벤트 트리거 :

$('div.provider_name').html('<input type="text" name="example" id="checkout_provider_checkout_moneyorder" value="example">') 
    .triggerHandler('contentChanged'); 
+0

죄송합니다. 더 자세히 설명해 주시겠습니까? ! –

+0

@ime 코드 예제를 추가했습니다. – Fenton

+0

페이지로드시 msg를 경고하지만 실제로 페이지 소스에는 필드가 없습니다. –