2011-11-07 3 views
1

datepickers를 사용하여 이상한 상황이 있습니다. (별거 아닌가요?) 몇 가지 조언을 원합니다.MVC3 - 여러 요소에 동일한 ID가있는 경우 jQuery datepicker

위치 목록이있는 화면이 있으며 각 위치에 대해 편집을 클릭하여 해당 위치를 편집 할 수 있습니다. 편집 링크 아래에 편집이 표시되며 한 번에 여러 위치를 편집 할 수 있습니다. 즉, 동일한보기가 화면에 여러 번 렌더링되므로 여러 개의 필드가 동일한 ID로 존재합니다 (4 개의 위치를 ​​편집하면 4 개의 "DateOpened"필드가 생김).

그래서, 난과 같이 필요한 모든 분야에 datepickers을 추가 자바 스크립트 내보기를로드 할 때 : 나는 날짜를 클릭하면 아마 당신은 이미 알아 냈어요으로

$(document).ready(function() { 
    var elements = $(".NeedsDatePicker > td > input"); 
    $(".NeedsDatePicker > td > input").datepicker(); 
    $(".NeedsDatePicker").removeClass("NeedsDatePicker"); 
}); 

는 잘 작동하지만 캘린더에서 여러 개의 편집 창이 열리면 첫 번째 "DateOpened"필드가 채워집니다.

일반 jQuery에서 선택할 수있는 것처럼 datepicker에 특정 부모 내에서 필드를 사용하도록 지시하는 방법이 있습니까?

$("#DateOpened", "Location-134").doWhatever... 

... 또는 MVC의 UpdateModel() 함수를 손상시키지 않고 필드에 다른 ID를 부여하는 방법이 있습니까? 아니면 다른 조언?

답변

1

ID는 HTML DOM 내에서 고유해야합니다. jQuery를 포함한 대부분의 DOM 조작 라이브러리/프레임 워크에는이 가정이 내장되어 있습니다.

+0

그러나 그것은 MVC의 TryUpdateModel을 중단하지 않습니다

이 형태로 동일한 ID를 피하기 위해 SO WRT에 대한 몇 가지 질문이 있습니다? "LocationAddress"라는 필드를 찾는 대신 바인딩 할 모델과 일치하지 않는 LocationAddress1, 2 등을 찾습니다. –

+0

동일한 ID를 가진 요소가 여러 개있는 경우 동일한 요소를 여러 번 업데이트하지 않습니까? 이 문제를 해결하려면 뷰 모델이 동일한 속성 이름으로 모델을 래핑하는 것이 좋다고 생각합니다. –

+0

감사 윌리엄; ID를 고유하게 유지하고 작동하도록했습니다. –