2012-12-26 9 views
7

मैं अपने रूप में इस इनपुट कोड है:html5 oninvalid के बाद तय नहीं काम करता है इनपुट क्षेत्र

<script> 
function check(input) { 
    if (input.value == "") { 
    input.setCustomValidity('Debe completar este campo.'); 
    } else { 
    input.setCustomValidity('Debe corregir este campo.'); 
    } 

} 
</script> 

यहाँ है: मैं इस javascritp कोड के साथ oninvalid संदेश को बदल

<input maxlength="255" id="information_name" name="information[name]" oninvalid="check(this)" placeholder="Nombre Completo" required="required" size="30" style="width:528px;height:25px;" tabindex="3" type="text"> 

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

मैं क्या गलत कर रहा हूं ???

उत्तर

5

आप setCustomValidity के साथ एक कस्टम वैधता संदेश सेट कर सकते हैं, फिर भी किसी भी गैर खाली स्ट्रिंग फ़ील्ड के रूप में कार्य करने के लिए कारण होगा: केवल setCustomValidity जब क्षेत्र में मूल्य वास्तव में अवैध है, अन्यथा यह एक रिक्त स्ट्रिंग पर सेट अगर यह एक अवैध मूल्य था। क्षेत्र की अवैध स्थिति को साफ़ करने के लिए आपको setCustomValidity('') की आवश्यकता है।

अपने वैधता सरल और क्षेत्र विशेषताओं के माध्यम से नियंत्रित है, तो आप object.willValidate का उपयोग परीक्षण करना कर सकते हैं और कस्टम वैधता संदेश सेट: आप के साथ setCustomValidity() तो क्षेत्र है एक मान सेट करते हैं

oninvalid="this.setCustomValidity(this.willValidate?'':'your custom message')"

+3

WillValidate एक ऐसी संपत्ति है जो कहती है कि इनपुट मान्य किया जा सकता है या नहीं, भले ही यह मान्य है या नहीं। – tyebillion

1

यदि आप setCustomValidity किसी भी मान के लिए खाली स्ट्रिंग नहीं है तो inputinvalid स्थिति में होने का कारण बन जाएगा। तो आपकी स्थिति किसी मान की जांच कर रही है, फिर फ़ील्ड को invalid किसी भी तरह से सेट करना है।

<script> 
function check(input) { 
    if (input.value == "") { 
    input.setCustomValidity('Debe completar este campo.'); 
    } else { 
    input.setCustomValidity(''); 
    } 
} 
</script> 
14

अवैध। यह एक गैर-शून्य लंबाई स्ट्रिंग सेट कर रहा है जिससे ब्राउजर क्षेत्र को अमान्य मानता है। अपने नए इनपुट के प्रभाव लेने के लिए आपको कस्टम वैधता को साफ़ करना होगा। , बस आप निम्नलिखित का उपयोग कर सकते हैं:

<input required maxlength="255" id="information_name" minlength=1 name="information[name]" oninvalid="setCustomValidity('Should not be left empty.')" 
    oninput="setCustomValidity('')" /> 

इस के लिए जावास्क्रिप्ट का उपयोग करने की आवश्यकता नहीं है।

+12

"इसके लिए जावास्क्रिप्ट का उपयोग करने की कोई आवश्यकता नहीं है" - यह जावास्क्रिप्ट है, हालांकि ... विशेषताएँ में उल्लिखित है। – stracktracer

+0

[वाक्यांश का उत्सुक मोड़ आपने वहां उपयोग किया] [https://stackoverflow.com/a/16878766/8655) – robertc

+0

एक बात मैंने देखी और मुझे नहीं पता क्यों ... "परीक्षण @ परीक्षण" क्यों पास होता है? यह वैध ईमेल नहीं है – carinlynchin

0

मेरे लिए केवल oninvalid="this.setCustomValidity(this.willValidate ? '' :'You must choose the account type from the list')" काम करता है। आईई के साथ इसका उपयोग करते समय बहुत सारे मुद्दे हैं।

संबंधित मुद्दे