2010-05-25 4 views
0

항목을 추가하는 데 사용하려는 양식이 있습니다. 항목이 추가되면 원래 양식을 재설정하여 다음 항목을 준비해야하며 저장된 양식은 다시 설정하기 전에 복제해야하며 'storedEntries'의 div에 추가해야합니다. 이 정도만 (대부분) 작동하지만, 새로 만든 양식에 액세스하는 데 문제가 있습니다. 필자는 제출 버튼의 value 속성을 'add'에서 'edit'로 변경해야합니다. 해야 할 것. 를 heres 내 양식 :jQuery로 새로 추가 된 DOM 요소를 트래버스하는 데 문제가 있습니다.

<div class="newTruck"> 
    <form id="addNewTruck" class='updateschedule' action="javascript:sub(sTime.value, eTime.value, lat.value, lng.value, street.value);"> 

     <b style="color:green;">Opening at: </b> 
      <input id="sTime" name="sTime" title="Opening time" value="Click to set opening time" class="datetimepicker"/> 

     <b style="color:red;">Closing at: </b> 
      <input id="eTime" name= "eTime" title="Closing time" value="Click to set closing time" class="datetimepicker"/> 

     <label for='street'>Address</label> 
      <input type='text' name='street' id='street' class='text' autocomplete='off'/> 
      <input id='submit' class='submit' style="cursor: pointer; cursor: hand;" type="submit" value='Add new stop'/> 
     <div id='suggests' class='auto_complete' style='display:none'></div> 
      <input type='hidden' name='lat' id='lat'/> 
      <input type='hidden' name='lng' id='lng'/> 

    </form> 

</div> 

필자는 아무 소용 jQuery로 백 다른 선택기를 사용하여 시도는 ...을 heres 내 스크립트는 스탠드로 : 요소가 제대로 사업부에 복제 및 삽입

function cloneAndClear(){ 
    var id = name+now; 
    $j("#addNewTruck").clone(true).attr("id",id).appendTo(".scheduledTrucks"); 
    $j('#'+id).filter('#submit').attr('value', 'Edit'); 

    $j("#addNewTruck")[0].reset(); 

    createPickers(); 
} 

,하지만 난이 요소에 액세스하는 방법을 찾을 수 없습니다 ... 스크립트의 세 번째 줄은 결코 작동하지 않습니다.

또 다른 문제는 복제 된 양식의 '값'이 사용자가 입력 한 값이 아닌 HTML 소스의 값으로 되돌아갑니다.

이러한 문제 중 하나를 해결하는 방법에 대한 조언은 크게 감사드립니다!

+0

세 번째 코드 줄을 사용하여 수행중인 작업이 완전히 명확하지 않습니다. 의도는 무엇입니까? –

+0

또한 'name'및 'now'변수의 값은 무엇입니까? –

+0

세 번째 줄의 목적은 입력 버튼의 값을 "새 트럭 추가"에서 "편집"으로 변경하는 것입니다. 첫 번째 줄을 $ j ("# addNewTruck") .clone (true) .attr ("id", id) .appendTo (". scheduledTrucks")로 변경하여이 작업을 수행 할 수있었습니다. ('value', 'Edit') 'now'는 현재 시간 (new Date())이고 'name'은 이제 사용자의 자리 표시자인 텍스트의 기본 문자열입니다. 계정 이름을 내가 대체 할 것입니다 –

답변

4

난 당신이 find을 사용하려는 생각 사용하지 않는 여러 요소가 있기 때문에이 문제를 가지고 있지만, 실제로 작동합니다 filter

$j('#'+id).find('#submit') 

같은 이드. 클래스를 사용하도록 HTML을 변경하거나이 특정 경우에는 다음 중 하나가 필요하지 않습니다.

$j('#' + id).find(":submit") 
1

.val()을 사용해 보셨습니까? 대신 .filter()의, .find()

$j('#'+id).find(':submit').val('Edit'); 
+0

이런 방식으로 작업하면 감사합니다. –

0

nickf 솔루션이 작동합니다. (그냥 코드 조각을 써서 확인해 보았습니다). jquery 문서에서 필터 정의를 확인하십시오.

일치하는 요소 집합을 선택기와 일치하는 집합으로 줄이거 나 함수의 테스트를 전달하십시오.

이 경우 find를 사용하십시오. 또한 동일한 ID로 여러 요소를 갖는 닉이 문제가되는 것은 특히 돔 조작을 수행 할 때 문제가됩니다. 적절한 수업을 듣는 것이 좋습니다.

관련 문제