2011-08-18 4 views
0

입력 필드의 텍스트 값을 변경하지만 필드가 아직 작성되지 않은 스크립트를 작성하려면 어떻게해야합니까?jQuery - 입력 필드가 작성된 후 텍스트 변경

입력 필드가 작성되기 전에 스크립트가로드됩니다. 특정 클래스를 가진 입력이 생성 될 때 텍스트에 값을 넣을 것을 알아야합니다. live()으로이 작업을 수행 할 수 있습니까? 명확히하기 위해

는 이벤트의 순서는 다음과 같습니다

1 - 페이지에 대한 응용 프로그램에서 사용 된 JavaScript가로드됩니다. 이것은의 라인을 따라 스크립트 뭔가 포함

$('.myDiv input').each(function() { 
    $(this).val('some text'); 
}); 

2을 - 두 번째 페이지 별 스크립트가 동적으로 값이없는 페이지에 입력을 생성하는로드됩니다. 이 스크립트를 수정할 수 없습니다. 이것은 중요합니다.이 스크립트를 수정하지 않는 솔루션이 필요합니다. 그렇지 않으면 여기에 게시하지 않을 것입니다.

$('.myDiv').html('<input type="text" />'); 
+0

문서보기 http://api.jquery.com/ready/ – akrisanov

+0

입력 필드는 어떻게 작성하고 있습니까? –

답변

1

예, live()은 원하는대로 처리합니다. jQuery를 사용하여 요소를 동적으로 추가하는 한 계속 작동합니다. 입력 필드의 값을 변경할 때마다

The jQuery.live() api is clear on this

사용 live()

focus 또는 blur 또는 keyup에 바인딩합니다.

$('.clickme').live('click', function() { 
    // Live handler called. 
}); 

UPDATE 다음이 추가되기 전에 당신이 어떤 방법으로 입력 요소를 변경하지 못할 가정.

$('#container').bind("DOMSubtreeModified",function() { 
    $('input.myClass:not(.alreadyChanged)').val("whatever you want to change it to"); 
    $('input.myClass:not(.alreadyChanged)').addClass('.alreadyChanged'); 
} 

새로운 요소가 DOM에 추가 될 때, 함수가 자동으로 실행됩니다 live()를 사용하여 필요하지 않은이 방법.

+0

원래 게시물을 명확히했습니다. 라이브를 사용하여 필드의 텍스트를 변경하는 방법은 무엇입니까? 초점, 흐림 효과 등은 충분히 간단하지만 텍스트를 변경하는 데 어떤 이벤트를 사용해야하는지 잘 모르겠습니다. – BadHorsie

+0

jQuery를 사용하여 입력을 만드는 경우 왜 그것을 만들 때 변경하지 않는가? 그 옵션이 아닌 경우 요소에서 click() 또는 focus() 이벤트를 수동으로 호출 할 수 있습니까? 컨테이너 div 나 본문 자체에'change()'이벤트를 넣을 수도 있습니다. 따라서 해당 div 또는 본문이 변경되면 모든 입력 필드가 반복되어 텍스트가 변경됩니다. 매번 모든 필드를 반복하지 않으려면 값을 이미 변경 한 각 입력 필드에 추가 클래스를 추가하고 jquery 선택기를 사용하여 제거하십시오. '$ ("input.myClass : not (.alreadyChanged) ")'. – Ali

+0

플러그인 스크립트가 플러그인을 만들고 있기 때문에 수정할 때 변경할 수 없으므로 수정하지 않아도됩니다. 그래서 이것을 염두에두면 입력에 클래스를 추가 할 수 없으며 값을 변경할 수 없다는 것을 의미합니다. 클래스가 생성되기를 기다려야하고 스크립트가 도착할 때를 기다리는 스크립트가 있어야합니다. 생성 한 다음 텍스트를 변경합니다 (가능한 경우). – BadHorsie

0

스크립트가 이미로드되어 있기 때문에.

나는 그것을 만들 때 myClass가 속성

<input style="myClass Styles Here">TEXT is Here</input> 

함께해야한다고 생각합니다.

+0

입력이 아직로드되어 있지 않습니다. – BadHorsie

+0

innerHTML 또는 jQuery .html()을 통해로드 한 후 생성됩니다. – InspiredJW

0

live()는 아쉽게도로드 이벤트를 지원하지 않습니다. 준비된 이벤트에 넣을 수 있습니까?

$().ready(function(){ $('.myClass').val('my text');}); 

jQuery 플러그인을 포장하고 플러그인을 적용한 직후 텍스트를 변경할 수도 있습니다. jQuery 플러그인 확장에 대한 자세한 내용은 여기를 참조하십시오. Best Way to Extend a jQuery Plugin

+0

음, '라이브 ('로드 ', 기능() {...}는 실제로 이상적입니다. 기본적으로 내가하려는 일입니다. – BadHorsie

관련 문제