2013-10-29 2 views
1

... @Html.DropDownList("lstUsers",(SelectList)ViewBag.UsersList, "--Select User--")MVC 자리 표시 자 ** 내가 너무 많은 게시물이 같은 DDL 자리를 사용하는 사람들의 예를 본 적이

또는 내 말은

@Html.DropDownListFor(u => u.RoleID, Model.RoleList, "Select", new { @id="hi"})

참 이 작동하지만 ddl 인덱스가 변경된 후 자리 표시자를 사라지게하려면이 모든 작업을 다시 선택해야하는 첫 번째 인덱스에 대한 더미 텍스트로 사용하십시오. 나는 내 삶에 대한 답을 찾을 수 없었다. 나는 드롭 다운 JQuery와

텍스트 상자 작동

$("#tb2").attr("placeholder", "--Please Select--"

을 시도했지만 적이 없다. 동적으로 생성 된 ddl을 사용하고 있습니다.

고마워요!

답변

1

그건 어떻게 select 요소가 작동하지 않습니다. 그 "자리 표시 자"실제로 선택 목록에 본격적인 옵션입니다. 값은 보통 빈 문자열로 설정되므로 POST에서 여전히 선택되어 있으면 빈 문자열이 게시되고 필드에 값이 있어야하는 경우 오류가 발생합니다. 자동으로 사라지는 것이 아닙니다.

텍스트 상자는 완전히 다릅니다. 자리 표시 자 텍스트가 텍스트 상자 안에 배치되면 문자 그대로 사용자 입력에 의해 덮어 쓰여 지므로 왜 사라지게됩니다. HTML5 텍스트 상자에는 실제 placeholder 속성이 있습니다.이 속성은 입력의 초점을 기반으로 약간의 텍스트를 표시하거나 숨 깁니다. 그러나 select 요소에는 동등한 요소가 없습니다.

JavaScript를 추가하면 잠재적으로 원하는 것을 할 수 있습니다. 당신은 선택의 변경 이벤트를 볼 것이며, 그 값 (안 "자리")이있는 경우, 당신은 (자리 표시 자이어야한다) 선택의 첫 번째 항목을 제거 할 수 있습니다 :

$('#mySelect').on('change', function() { 
    if ($(this).val() != '') { 
     var firstChild = $(this).children().eq(0); 
     if (firstChild.prop('value') == '') firstChild.remove(); 
    } 
}); 

(스트레이트 자바 스크립트에서 똑같이하는 것이 훨씬 어려울 것이고 ASP.NET MVC를 사용하기 때문에 jQuery를 사용하는 것이 안전 할 것입니다.)

+0

감사합니다! 나는 이것에 대한 대답을 잠시 동안 찾고 있었다. 이제'! ModelState.IsValid'가 있으면 이것을 유지하는 방법을 알고 싶습니다. 나는 그것의 간단한 해결책 메신저 – CSharper

+0

생각하지 Jquery의 이전 버전을 사용하는 사람은 아마 그냥 $ ('# mySelect')를 사용해야 할 것입니다. 변경 및 attr 대신 소품 – CSharper

+1

당신은 단순히 동일한 내부 비트를 실행할 수 있습니다 변경 이벤트를 기다리는 대신'$ (document) .ready'에 스크립트를 추가하십시오. –