2013-01-03 15 views
11

मैंने नॉकआउट प्रमाणीकरण का उपयोग नहीं किया है और मैं इसके साथ क्या किया जा सकता है इसके बारे में महसूस करने की कोशिश कर रहा हूं।नॉकआउट-सत्यापन के साथ समस्याएं कस्टम संदेश टेम्पलेट

मैं यह पता लगाने की कोशिश कर रहा हूं कि कोई त्रुटि होने पर इनपुट टैग के दाईं ओर त्रुटि संदेश के बजाय आइकन प्रदर्शित करना संभव है या नहीं। और, यदि उपयोगकर्ता आइकन पर होवर करता है, तो त्रुटि संदेश प्रदर्शित होता है।

क्या किसी ने ऐसा किया है या इसे पूरा करने का विचार है?

धन्यवाद।

संपादित करें:

मैं मेरे विचार मॉडल में निम्नलिखित है कहो (मैं क्या करने की कोशिश कर रहा हूँ की अधिक विस्तृत उदाहरण):

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

मेरे HTML:

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

मेरी समझ यह है कि यदि पहला नाम टेक्स्टबॉक्स खाली छोड़ दिया गया था, तो (डिफ़ॉल्ट रूप से) कुछ टेक्स्ट टेक्स्टबॉक्स के दाईं ओर प्रदर्शित किया जाएगा जिसमें यह फ़ील्ड आवश्यक है।

क्या मैं समझने की कोशिश कर रहा हूँ सही, जो जब पर होवर किया है, त्रुटि संदेश पॉपअप होगा पर एक आइकन प्रदर्शित करने के लिए सही पर त्रुटि पाठ प्रदर्शित करने में डिफ़ॉल्ट व्यवहार को बदलने के लिए कैसे है।

तो, एक शुरुआत होगी कुछ की तरह:

<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> 

मैं अगर मैं messageTemplate सुविधा सही ढंग से उपयोग कर रहा हूँ कोई सुराग नहीं है। मैं यह भी नहीं जानता कि प्रत्येक त्रुटि के लिए सही त्रुटि संदेश प्रदर्शित करने के लिए कस्टम टेम्पलेट में पाठ को बाध्य करना क्या है। IOW, firstname और lastname में कस्टम त्रुटि संदेश हो सकते हैं। यदि वे दोनों एक ही टेम्पलेट का उपयोग कर रहे हैं, तो टेम्पलेट कस्टम त्रुटि संदेश को कैसे समायोजित करता है?

मुझे उम्मीद है कि यह समझ में आता है।

+0

कुछ कोड अपनी आवश्यकताओं के समाधान अनुरूप बनाने के लिए मददगार होगा, लेकिन इस सवाल का जवाब हाँ है:

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

मैं एक बेला कार्रवाई में यह दिखाने के लिए बनाया है। नॉकआउट आपको एक सत्यापन के साथ एक कस्टम div या span टैग सेट करने की अनुमति देता है मैसेज विशेषता जिसका उपयोग डिफ़ॉल्ट त्रुटि टेक्स्ट को ओवरराइड करने के लिए किया जा सकता है (https://github.com/ericmbarnard/Knockout-Validation/wiki/Validation- बाइंडिंग्स)।इसके अतिरिक्त, आप अपने अवलोकनों के लिए एक कस्टम सत्यापनकर्ता फ़ंक्शन सेट कर सकते हैं जो त्रुटि मिलने पर टूलटिप को सक्रिय/निष्क्रिय कर सकता है। यदि आप हमें कुछ नमूना कोड (अधिमानतः एक पहेली में) दिखा सकते हैं, तो हम आपको जिस तरह से काम करना चाहते हैं, उसे पाने के लिए आवश्यक परिवर्तन करने में आपकी सहायता कर सकते हैं। –

+0

आपकी प्रतिक्रिया के लिए धन्यवाद और देरी के लिए खेद है ... कुछ छुट्टी दिन। मैंने एक संपादन को और अधिक स्पष्ट रूप से समझाया कि मैं क्या कर रहा हूं। – RHarris

उत्तर

18

आइकन दिखाना और होवरिंग पर त्रुटि संदेश प्रदर्शित करना संभव है।

एक परियोजना में हम कुछ ऐसा ही कर रहे हैं। हम एक त्रुटि संख्या के साथ बैज दिखाते हैं, लेकिन हम इनपुट पर होवर करते समय त्रुटियों को दिखाने के लिए फ़ील्ड्स और त्रुटियों को हाइलाइट करने के लिए सजावट का उपयोग करते हैं।

एक त्रुटि संदेश बनाने के लिए टेम्पलेट आपको अपने टेम्पलेट को एक स्क्रिप्ट टैग में लपेटना चाहिए। यह ko template binding के टेम्पलेट्स की तरह काम करता है।

टेम्पलेट के अंदर आप 'फ़ील्ड' का जिक्र करके मान्य अवलोकन योग्य तक पहुंच सकते हैं। त्रुटि संदेश आपके अवलोकन योग्य की संपत्ति 'त्रुटि' में संग्रहीत है। http://jsfiddle.net/nuDJ3/180/

+0

धन्यवाद टन! यह वही है जो मैं पूरा करने की कोशिश कर रहा था! – RHarris

+0

दरअसल, अब मैं इसके साथ थोड़ा और खेलता हूं, मैं देख रहा हूं कि यह मेरी अपेक्षा की तरह काम नहीं कर रहा है। सबसे पहले, एक्स (बैज) कभी नहीं चला जाता है। दूसरा, इस पहेली को http://jsfiddle.net/nuDJ3/5/ देखें और ध्यान दें कि किसी फ़ील्ड को साफ़ करने से त्रुटि संदेश ट्रिगर नहीं होता है। क्या मैं कुछ भूल रहा हूँ? – RHarris

+0

ओह मुझे खेद है। अगर यह या तो मान्य है या संशोधित नहीं है तो संदेश को छिपाने के लिए मुझे याद आया। नॉकआउट-सत्यापन एक बार और बाद में अवधि को सम्मिलित करता है, इसके बाद आपको सामान्य बाइंडिंग का उपयोग करना होगा। मैंने जवाब अपडेट किया है और [fiddle] (http://jsfiddle.net/nuDJ3/6/) का एक नया संस्करण बनाया है। यह चाल "if: field.isModified() &&! Field.isValid()" को स्पैन के बाध्यकारी में डालने के लिए है। – delixfe