कुछ समय पहले मुझे कुछ इसी तरह की जरूरत थी ... और मुझे मिल गया।
तो मैं यहाँ क्या डाल सकता हूँ कि मैं कैसे कर सकता हूँ कि ट्रिक जावास्क्रिप्ट के बिना किसी सत्यापन के बिना सबमिट किया जा सकता है और केवल तभी सत्यापन निष्पादित करता है जब उपयोगकर्ता एक बटन दबाता है (आमतौर पर एक बटन)।
उदाहरण के लिए मैं केवल दो फ़ील्ड और सबमिट बटन के साथ एक न्यूनतम फ़ॉर्म का उपयोग करूंगा।
याद रखें कि क्या चाहिए: जावास्क्रिप्ट से इसे बिना किसी जाँच के जमा किया जा सकता है। हालाँकि, यदि उपयोगकर्ता ऐसा बटन दबाता है, तो सत्यापन किया जाना चाहिए और केवल तभी भेजा जाना चाहिए जब सत्यापन पास हो।
आम तौर पर यह सब कुछ के पास से शुरू होता है (मैंने सभी अतिरिक्त सामानों को हटा दिया है जो महत्वपूर्ण नहीं हैं):
<form method="post" id="theFormID" name="theFormID" action="">
<input type="text" id="Field1" name="Field1" />
<input type="text" id="Field2" name="Field2" />
<input type="submit" value="Send" onclick="JavaScript:return Validator();" />
</form>
देखें कि कैसे फ़ॉर्म टैग नहीं है onsubmit="..."
(याद रखें कि यह एक शर्त थी कि यह नहीं होना चाहिए)।
समस्या यह है कि फॉर्म हमेशा सबमिट किया जाता है, भले ही onclick
रिटर्न true
याfalse
।
अगर मैं के लिए बदल जाते type="submit"
हैंtype="button"
, यह काम करने के लिए लगता है, लेकिन ऐसा नहीं करता। यह कभी भी फॉर्म नहीं भेजता है, लेकिन यह आसानी से किया जा सकता है।
तो आखिरकार मैंने इसका इस्तेमाल किया:
<form method="post" id="theFormID" name="theFormID" action="">
<input type="text" id="Field1" name="Field1" />
<input type="text" id="Field2" name="Field2" />
<input type="button" value="Send" onclick="JavaScript:return Validator();" />
</form>
और function Validator
, कहाँ पर return True;
है, मैं भी एक जावास्क्रिप्ट जमा वाक्य जोड़ता हूं, कुछ इस तरह से:
function Validator(){
// ...bla bla bla... the checks
if( ){
document.getElementById('theFormID').submit();
return(true);
}else{
return(false);
}
}
id=""
बस जावास्क्रिप्ट के लिए है getElementById
,name=""
यह केवल POST डेटा पर प्रदर्शित होने के लिए है।
इस तरह से यह मेरी जरूरत के अनुसार काम करता है।
मैंने इसे केवल उन लोगों के लिए रखा है onsubmit
जिन्हें फ़ॉर्म पर कोई फ़ंक्शन की आवश्यकता नहीं है , लेकिन उपयोगकर्ता द्वारा एक बटन दबाए जाने पर कुछ सत्यापन करें।
मुझे फॉर्म टैग पर कोई ओबसुमिट की आवश्यकता क्यों है? आसान है, अन्य जावास्क्रिप्ट भागों पर मुझे एक सबमिट करने की आवश्यकता है, लेकिन मैं नहीं चाहता कि कोई सत्यापन हो।
कारण: यदि उपयोगकर्ता वह है जो मुझे सबमिट करना चाहता है और उसे सत्यापन करने की आवश्यकता है, लेकिन यदि यह जावास्क्रिप्ट है तो मुझे कभी-कभी सबमिट करने की आवश्यकता होती है जबकि ऐसी मान्यताएं इससे बचती हैं।
यह अजीब लग सकता है, लेकिन उदाहरण के लिए सोचते समय नहीं: एक लॉगिन पर ... कुछ प्रतिबंधों के साथ ... जैसे कि PHP सत्रों का उपयोग करने की अनुमति नहीं है और न ही कुकीज़ की अनुमति है!
तो किसी भी लिंक को ऐसे फॉर्म सबमिट में परिवर्तित किया जाना चाहिए, ताकि लॉगिन डेटा खो न जाए। जब कोई लॉगिन अभी तक नहीं हुआ है, तो यह भी काम करना होगा। इसलिए लिंक पर कोई सत्यापन नहीं किया जाना चाहिए। लेकिन मैं उपयोगकर्ता को एक संदेश प्रस्तुत करना चाहता हूं यदि उपयोगकर्ता ने दोनों क्षेत्रों, उपयोगकर्ता और पास में प्रवेश नहीं किया है। इसलिए यदि कोई लापता है, तो फॉर्म नहीं भेजा जाना चाहिए! समस्या है।
समस्या देखें: प्रपत्र को तब नहीं भेजा जाना चाहिए जब एक फ़ील्ड केवल तभी खाली हो जब उपयोगकर्ता ने एक बटन दबाया हो, अगर यह एक जावास्क्रिप्ट कोड है तो इसे भेजा जाना चाहिए।
यदि मैं onsubmit
फॉर्म टैग पर काम करता हूं, तो मुझे यह जानना होगा कि क्या यह उपयोगकर्ता या अन्य जावास्क्रिप्ट है। चूंकि कोई पैरामीटर पारित नहीं किया जा सकता है, यह सीधे संभव नहीं है, इसलिए कुछ लोग यह बताने के लिए एक चर जोड़ते हैं कि क्या सत्यापन किया जाना चाहिए या नहीं। सत्यापन समारोह पर पहली बात यह है कि चर मूल्य, आदि की जांच करें ... बहुत जटिल और कोड यह नहीं कहता कि वास्तव में क्या चाहता है।
तो समाधान के लिए टैग टैग पर ऑनसाइट नहीं है। इनडायड को वह स्थान दें जहां यह वास्तव में जरूरत है, बटन पर।
दूसरी तरफ, क्यों मैं वैचारिक रूप से ओनसुबमिट कोड डाल रहा हूं, मैं नहीं चाहता कि ओनसुबमिट सत्यापन हो। मैं वास्तव में बटन सत्यापन चाहता हूं।
न केवल कोड अधिक स्पष्ट है, यह वह जगह है जहां यह होना चाहिए। बस इसे याद रखें: - मैं नहीं चाहता कि जावास्क्रिप्ट को फ़ॉर्म को मान्य किया जाए (जो हमेशा सर्वर की ओर PHP द्वारा किया जाना चाहिए) - मैं उपयोगकर्ता को यह दिखाना चाहता हूं कि सभी फ़ील्ड खाली नहीं होना चाहिए, यह बताने वाला एक संदेश है जिसमें जावास्क्रिप्ट (क्लाइंट की आवश्यकता है) की ओर)
तो क्यों कुछ लोग (सोचते हैं या मुझे बताते हैं) यह एक ऑनसाइट सत्यापन पर किया जाना चाहिए? नहीं, वैचारिक रूप से मैं ग्राहक पक्ष में मान्य एक ऑनसाइट नहीं कर रहा हूं। मैं बस एक बटन पर कुछ कर रहा हूं दबाया जाता है, तो बस इसे लागू करने के लिए क्यों नहीं?
ठीक है कि कोड और शैली पूरी तरह से चाल है। किसी भी जावास्क्रिप्ट पर, जिसे मुझे अपने द्वारा डाले गए फॉर्म को भेजने की आवश्यकता है:
document.getElementById('theFormID').action='./GoToThisPage.php'; // Where to go
document.getElementById('theFormID').submit(); // Send POST data and go there
और जब मुझे इसकी आवश्यकता नहीं है तो सत्यापन को रोक दिया जाता है। यह सिर्फ फॉर्म भेजता है और एक अलग पेज लोड करता है, आदि।
लेकिन यदि उपयोगकर्ता सबमिट बटन पर क्लिक करता है (उर्फ type="button"
नहीं type="submit"
) तो फॉर्म जमा करने से पहले सत्यापन किया जाता है और यदि वैध नहीं भेजा गया है।
अच्छी तरह से उम्मीद है कि यह दूसरों को लंबे और जटिल कोड की कोशिश नहीं करने में मदद करता है। बस onsubmit
जरूरत नहीं है, और उपयोग नहीं करते हैं onclick
। लेकिन बस बदलने के type="submit"
लिए याद रखें type="button"
और कृपया submit()
जावास्क्रिप्ट द्वारा करना न भूलें ।