2009-09-28 1 views
0

내 MVC 작업에서 기존 데이터를 가져 오는 jQuery 자동 완성 필터가 있습니다. 필드에 입력 된 데이터가 데이터베이스에 아직 존재하지 않도록하고 싶습니다.필드를 강제로 오류 상태로 전환

필드를 class = "input-validation-error"로 설정하기 위해 자동 완성에서 .result 및 .change를 사용하여 thisworkig를 사용했습니다. xVal 클라이언트 검증을 추가하면 여전히 작동하지만 xVal은 css 클래스를 지우는 것처럼 보이므로 필드 항목이 잠깐 빨간색으로 바뀌어 배경이 지워집니다.

xVal 코드를 변경하려고 시도하는 대신 일반 클라이언트 데이터 유효성 검사 오류와 마찬가지로 필드를 오류 상태로 표시하기 위해 xVal 클라이언트 유효성 검사를 얻습니다.

어떻게하면됩니까? 자동 완성 .result 이벤트에서 xVal에서 오류 상태를 강제로 수행하는 데 사용할 수있는 코드는 무엇입니까?

업데이트 : 나는 Wyatt Barnett에서 아이디어를 시도했지만, 내 의견에서 알 수 있듯이 내가 원하는 것은 아닙니다. 여기에 내가 무엇을의 코드는 다음과 같습니다

필드 마크 업 :

  <p> 
       <%= Html.LocalisedLabel("ProjectId") %> 
       <%= Html.TextBox("project.ProjectId") %> 
       <%= Html.ValidationMessage("project.ProjectId", "*") %> 
      </p> 

경우 xval 태그 : 자동 완성에 대한

 <%= Html.ClientSideValidation<ProjectBO>("project").UseValidationSummary("myValidationSummary") %> 
      <%= Html.ClientSideValidation<ProjectBO>("project").AddRule("ProjectId", new RemoteRule(Url.Action("ValidateProjectIdCreate", "LookUp", new { projectId = Model.ProjectId})))%> 

자바 스크립트 태그 :

<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#project_ProjectId').autocomplete('<%= Url.Action("ProjectIdList", "LookUp") %>', 
{ 
    delay: 10, 
    minChars: 1, 
    matchCase: 0, 
    matchSubset: 1, 
    autoFill: false, 
    maxItemsToShow: 10, 
    cacheLength: 10 
} 
); 

     $('#project_ProjectId').result(function(item) { 
      if (item) { 
       //match 
       $('#project_ProjectId').attr("class", "input-validation-error"); 
      } 
      else { 
       $('#project_ProjectId').removeAttr("class"); 
      } 
     }); 
     $('#project_ProjectId').change(function() { 
      $('#project_ProjectId').attr("class", ""); 
     }); 
    }); 
</script> 

이 스크립트 나에게 처리 할 이벤트를 주지만 그 안에 무엇을 넣을 수 있습니까?

답변

1

upgrade to xVal 1.0이 아약스 유효성 검사 완구를 사용합니까? 그렇게하면 프레임 워크와 싸울 필요가 없습니다. 그 각도가 작동하지 않습니다 때문에


좋아, 아마 당신은 일을 처리하기 위해 (경우 xval은이 놀이기구) JQuery와 유효성 검사 API와 결합 된 autocomplete.result를 사용할 수 있습니다.

+0

실제로 최신 버전입니다. 아약스 유효성 검사 장난감을 확인해야하는 것 같습니다. 가서 그걸 할거야 – Redeemed1

+0

좋아, 나는 그것을 시도했지만 그것이 작동하는 동안 내가 뭘 원하는지하지 않습니다. 나는 캐싱과 사용자에게 제공하는 단서의 측면에서 꽤 효과가있는 분야에서 자동 완성을 사용합니다. 또한 xVal 원격 유효성 검사기는 입력 한 모든 문자의 서버로 돌아갑니다. 내가 원하는 것은 내 코드에서 해고되고 내 코드에서 삭제되는 유효성 검사기 (원격 호출이 아님)입니다. – Redeemed1

+0

이 작업을 수행하기 위해 autocomplete.result 이벤트를 사용할 수는 있지만 그 시점에서 코드를 넣을 내용을 알지 못합니다. 오류 상태를 표시하는 대체 방법이 있지만 제출시 차단을 강요합니다 – Redeemed1

0

마지막으로 해결했습니다.

입력 필드에 jQuery 자동 완성을 사용하여 기존 데이터베이스 항목의 조회 목록을 표시하여 사용자에게 지침을 제공했습니다.

자동 완성에서 표시된 목록 항목을 선택하거나 존재하지 않는 데이터베이스 항목을 입력하여 필드를 종료하면 xVal RemoteValidator가 트리거되어 유효성 검사 실패 조건을 설정하거나 지울 수 있습니다. 다음과 같이

코드는 다음과 같습니다>

자동 완성 스크립트 같습니다

 <%= Html.ClientSideValidation<ProjectBO>("project").UseValidationSummary("myValidationSummary" 

.AddRule ("ProjectId"새로운 RemoteRule (Url.Action ("ValidateProjectIdCreate를", "조회"))) % 다음 :

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#project_ProjectId').autocomplete('<%= Url.Action("ProjectIdList", "LookUp") %>', 
      { 
       delay: 10, 
       minChars: 1, 
       matchCase: 0, 
       matchSubset: 1, 
       autoFill: false, 
       maxItemsToShow: 10, 
       cacheLength: 10 
      } 
     ); 
    }); 
</script> 

그런 다음 질문의 이전 코드에서 autocomplete.result 및 .change 이벤트를 제거했습니다.

잘 작동합니다.