2012-10-24 21 views
8

मैं HTML 5 सत्यापन और स्थानीयकरण के साथ खेल रहा हूं और कुछ कोड काम करने में कामयाब रहा हूं जो मुझे HTML 5 सत्यापन त्रुटि संदेशों को स्थानीयकृत करने की अनुमति देता है (नीचे देखें)। मेरी समस्या यह है कि, क्रोम में जब आप किसी पैटर्न के साथ मेल खाते हैं तो आपको अभी भी अंग्रेजी में पॉप अप मिलता है (या मुझे लगता है कि आपके द्वारा क्रोम में जो भी भाषा सेट है) कृपया अनुरोधित प्रारूप से मेल करें। आप इस पॉप अप को कैसे दबाते हैं ताकि मैं अपने स्वयं के सत्यापन संदेशों का उपयोग कर सकूं?क्रोम 'कृपया अनुरोधित प्रारूप' सत्यापन संदेश से मेल खाता है

 $(document).ready(function() { 

      var elementsInput = document.getElementsByTagName("input"); 
      var elementsTextArea = document.getElementsByTagName("textarea"); 

      for (var i = 0; i < elementsInput.length; i++) { 
       elementsInput[i].oninvalid = function (e) { 
        e.target.setCustomValidity(""); 
        if (!e.target.validity.valid) { 

         switch (e.target.name) { 

          case "Name": 
           if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
            e.target.setCustomValidity("Anna nimesi"); 
           } else { 
            e.target.setCustomValidity("Please enter a Name"); 
           } 
           break; 

          case "EmailAddress": 
           if (e.target.validity.valueMissing) { 
            if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
             e.target.setCustomValidity("Anna sähköpostiosoitteesi"); 
            } else { 
             e.target.setCustomValidity("Please enter an Email Address"); 
            } 
           } 
           else if (e.target.validity.patternMismatch) { 
            if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
             e.target.setCustomValidity("Virheellinen sähköpostiosoite"); 
            } else { 
             e.target.setCustomValidity("Invalid Email Address"); 
            } 
           } 
           break; 

          case "PhoneNumber": 
           if (e.target.validity.valueMissing) { 
            if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
             e.target.setCustomValidity("Anna puhelinnumerosi"); 
            } else { 
             e.target.setCustomValidity("Please enter a Phone Number"); 
            } 
           } 
           else if (e.target.validity.patternMismatch) { 
            if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
             e.target.setCustomValidity("Virheellinen puhelinnumero"); 
            } else { 
             e.target.setCustomValidity("Invalid Phone Number"); 
            } 
           } 
           break; 
          } 
         } 
       }; 
        elementsInput[i].oninput = function (e) { 
         e.target.setCustomValidity(""); 
        }; 
       } 

      for (var j = 0; j < elementsTextArea.length; j++) { 
       elementsTextArea[j].oninvalid = function (e) { 
        e.target.setCustomValidity(""); 
        if (!e.target.validity.valid) { 
         switch (e.target.name) { 
          case "Details": 
           if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
            e.target.setCustomValidity("Täytäthän yksityiskohdat"); 
           } else { 
            e.target.setCustomValidity("Please enter Details"); 
           } 
           break; 
         } 
        } 
       }; 
       elementsTextArea[j].oninput = function (e) { 
        e.target.setCustomValidity(""); 
       }; 
      } 
     }); 
+0

[HTML5 फॉर्मेट आवश्यक विशेषता का संभावित डुप्लिकेट। कस्टम सत्यापन संदेश सेट करें?] (Http://stackoverflow.com/questions/5272433/html5-form-required-attribute-set-custom-validation-message) – jbabey

+0

उस प्रश्न का डुप्लिकेट – user517406

+0

मुझे उम्मीद है कि मैं जवाब देने में सक्षम था आपका प्रश्न :) – Swivel

उत्तर

6

डिफ़ॉल्ट ब्राउज़र कार्रवाई पॉपअप संदेश प्रदर्शित करना है। पॉप अप करने से रोकने के लिए आपको e.preventDefault(); का उपयोग करना चाहिए।

$(document).ready(function() { 

     var elementsInput = document.getElementsByTagName("input"); 
     var elementsTextArea = document.getElementsByTagName("textarea"); 

     for (var i = 0; i < elementsInput.length; i++) { 
      elementsInput[i].oninvalid = function (e) { 
       e.target.setCustomValidity(""); 
       if (!e.target.validity.valid) { 

        switch (e.target.name) { 

         case "Name": 
          e.preventDefault(); 
          if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
           e.target.setCustomValidity("Anna nimesi"); 
          } else { 
           e.target.setCustomValidity("Please enter a Name"); 
          } 
          break; 

         case "EmailAddress": 
          e.preventDefault(); 
          if (e.target.validity.valueMissing) { 
           if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
            e.target.setCustomValidity("Anna sähköpostiosoitteesi"); 
           } else { 
            e.target.setCustomValidity("Please enter an Email Address"); 
           } 
          } 
          else if (e.target.validity.patternMismatch) { 
           if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
            e.target.setCustomValidity("Virheellinen sähköpostiosoite"); 
           } else { 
            e.target.setCustomValidity("Invalid Email Address"); 
           } 
          } 
          break; 

         case "PhoneNumber": 
          e.preventDefault(); 
          if (e.target.validity.valueMissing) { 
           if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
            e.target.setCustomValidity("Anna puhelinnumerosi"); 
           } else { 
            e.target.setCustomValidity("Please enter a Phone Number"); 
           } 
          } 
          else if (e.target.validity.patternMismatch) { 
           if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
            e.target.setCustomValidity("Virheellinen puhelinnumero"); 
           } else { 
            e.target.setCustomValidity("Invalid Phone Number"); 
           } 
          } 
          break; 
         } 
        } 
      }; 

      elementsInput[i].oninput = function (e) { 
       e.target.setCustomValidity(""); 
      }; 
     } 

     for (var j = 0; j < elementsTextArea.length; j++) { 
      elementsTextArea[j].oninvalid = function (e) { 
       e.target.setCustomValidity(""); 
       if (!e.target.validity.valid) { 
        switch (e.target.name) { 
         case "Details": 
          e.preventDefault(); 
          if ("@Thread.CurrentThread.CurrentUICulture.Name.ToLower()" == "fi-fi") { 
           e.target.setCustomValidity("Täytäthän yksityiskohdat"); 
          } else { 
           e.target.setCustomValidity("Please enter Details"); 
          } 
          break; 
        } 
       } 
      }; 

      elementsTextArea[j].oninput = function (e) { 
       e.target.setCustomValidity(""); 
      }; 
     } 
    }); 

सैद्धांतिक रूप से क्या तुम सच में e.preventDefault() सही if (!e.target.validity.valid) { के बाद रख सकते हैं, लेकिन मैंने देखा है कि आप अपने स्विच में एक default: नहीं था, इसलिए मैं आपको यह वहाँ नहीं करना चाहता था ग्रहण किया। किसी भी मामले में, आप प्रत्येक व्यक्ति case: के अंदर e.preventDefault() का उपयोग कर सकते हैं जहां आप इसे चाहते हैं, या आप if कथन के बाद इसे डाल सकते हैं। जो आपके उद्देश्य को बेहतर बनाता है।

+1

सलाह के लिए धन्यवाद, लेकिन यह रोकता है हालांकि सभी पॉप अप, इसलिए जहां मैं अपने जावास्क्रिप्ट में e.target.setCustomValidity को कॉल करता हूं, इसे अनदेखा कर दिया जाता है। – user517406

+0

शायद यह मदद करेगा: http://stackoverflow.com/questions/1164132/how-to-reenable-event-preventdefault –

+0

इसका jQuery संस्करण क्या है? –

3

आप अपने खुद के सत्यापन चला रहे हैं आप को रोका जा सकता है किसी भी तरह

<form name='testForm' method='POST' action='#' novalidate="novalidate"> 

"novalidate" करने के लिए फार्म की novalidate विशेषता की स्थापना द्वारा निर्मित एचटीएमएल 5 ब्राउज़र मान्यता यह लागू करने को रोकने के लिए ब्राउज़र बता देंगे एचटीएमएल 5 ऑटो-सत्यापन।

+1

यह मेरे लिए काम करता है। मैं बहुत निराश था और इस मुद्दे को उत्पन्न करने वाली स्क्रिप्ट या कोड नहीं मिला। लेकिन कोड का यह टुकड़ा मेरे लिए काम करता था। –

+0

यह सही तरीका है – Petraeus

0
jQuery के साथ

:

$('input').on("invalid", function(e) { 
    e.preventDefault(); 
}); 
0

@ माइकल-angstadt जवाब बंद का निर्माण। आप स्वचालित रूप से novalidate विशेषता को अपने jQuery में जोड़कर जोड़ सकते हैं:

$("form").attr('novalidate', 'novalidate'); 
संबंधित मुद्दे