2013-01-03 3 views
11

녹아웃 유효성 검사를 사용하지 않았으며이를 수행 할 수있는 느낌을 얻으려고합니다.녹아웃 유효성 검사 맞춤 메시지 템플릿 문제

오류가있을 때 입력 태그 오른쪽에 오류 메시지가 아닌 아이콘을 표시 할 수 있는지 알아 내려고합니다. 사용자가 아이콘 위로 마우스를 가져 가면 오류 메시지가 표시됩니다.

누구든지이 작업을 수행했거나이를 수행하는 방법에 대해 알고 있습니까?

감사합니다.

편집 :

내가 내보기 모델에 다음을 말해봐 (I 할 노력하고있어보다 자세한 예) :

var firstName = ko.observable().extend({required: true}); 

내 HTML :

<input data-bind="value: firstName" /> 

내 이해는 첫 번째 이름 텍스트 상자가 비어 있으면 기본적으로 일부 텍스트는이 필드가 필수라는 텍스트 상자의 오른쪽에 표시됩니다. 내가 이해하기 위해 노력하고있어

은 이상 공중 선회 할 때 오류 메시지가 팝업됩니다, 오른쪽의 아이콘를 표시 오른쪽에 오류 텍스트 표시의 기본 동작을 변경하는 방법입니다. 내가 제대로 messageTemplate 기능을 사용하고있는 경우

<div data-bind="validationOptions: {messageTemplate: 'myCustomTemplate'}">  
    <input data-bind="value: firstName" /> 
    <input data-bind="value: lastName" /> //also required 
</div> 
<div id='myCustomTemplate'> 
    //This icon should only display when there is an error 
    <span class="ui-icon ui-icon-alert" style="display: inline-block"/> 

    //css/javascript would display this when user hovers over the above icon 
    <span data-bind="validationMessage: field" /> 
</div> 

내가 단서가 없다 :

그래서 시작은 뭔가 같은 것입니다. 또한 각 오류에 대해 올바른 오류 메시지를 표시하기 위해 customTemplate에서 텍스트를 바인딩 할 대상을 모르겠습니다. IOW, 이름 및 성은 사용자 정의 오류 메시지를 가질 수 있습니다. 둘 다 동일한 템플리트를 사용하는 경우 템플리트는 사용자 정의 오류 메시지를 어떻게 수용합니까?

나는 그것이 의미가 있기를 바랍니다.

+0

일부 코드가 사용자의 요구에 솔루션을 조정할 도움이 될 것이다하지만 대답은 YES입니다 :

<script type="text/html" id="myCustomTemplate"> <span data-bind="if: field.isModified() && !field.isValid(), attr: { title: field.error }">X</span> </script> 

나는 행동이 보여줄 수있는 바이올린을 만들었습니다. Knockout을 사용하면 기본 오류 텍스트 (https://github.com/ericmbarnard/Knockout-Validation/wiki/Validation-Bindings)를 무시하는 데 사용할 수있는 validationMessage 특성을 사용하여 사용자 정의 div 또는 span 태그를 설정할 수 있습니다.이 외에도 오류가 발견되면 툴팁을 활성화/비활성화 할 수있는 관측 가능 객체에 대한 사용자 정의 검사기 기능을 설정할 수 있습니다. 샘플 코드 (가급적이면 바이올린)를 우리에게 보여줄 수 있다면 원하는 방식으로 작동하도록 필요한 변경을 할 수 있도록 도와 줄 수 있습니다. –

+0

답장을 보내 주셔서 감사 드리며 지연을 위해 유감스럽게 생각합니다. 며칠간 휴가를드립니다. 나는 내가 무엇을하고 있는지 더 자세히 설명하는 편집을 추가했다. – RHarris

답변

18

아이콘을 표시하고 호버링시 오류 메시지를 표시하는 것이 가능합니다.

하나의 프로젝트에서 우리는 비슷한 것을하고 있습니다. 오류 번호가있는 배지를 표시하지만 decorateElement를 사용하여 필드를 강조 표시하고 errorsAsTitleOnModified를 사용하여 입력 위로 마우스를 가져 가면 오류를 표시합니다.

오류 메시지 템플릿을 만들려면 템플릿을 스크립트 태그로 묶어야합니다. ko template binding의 템플릿처럼 작동합니다.

템플릿 내부에서 '필드'를 참조하여 유효성있는 관찰 가능 항목에 액세스 할 수 있습니다. 오류 메시지는 관찰 대상의 '오류'속성에 저장됩니다. http://jsfiddle.net/nuDJ3/180/

+0

감사합니다! 이것은 정확히 내가 성취하려고 시도한 것입니다! – RHarris

+0

사실, 이걸 가지고 좀 더 놀았으니 기대했던 것처럼 작동하지 않는 걸보고 있습니다. 첫째, X (배지)는 절대로 없어지지 않습니다. 둘째,이 피들 http://jsfiddle.net/nuDJ3/5/을 확인하고 필드를 지우면 오류 메시지가 표시되지 않습니다. 내가 놓친 게 있니? – RHarris

+0

오, 미안해. 메시지가 유효하거나 수정되지 않은 경우 메시지를 숨기지 않았습니다. 녹아웃 유효성 검사는 일반 바인딩을 사용해야하는 번후에 스팬을 삽입합니다. 나는 대답을 업데이트하고 [피들] (http://jsfiddle.net/nuDJ3/6/)의 새 버전을 만들었습니다. 속임수는 "if : field.isModified() &&! field.isValid()"를 스팬의 바인딩에 삽입하는 것입니다. – delixfe

관련 문제