कोई कार्रवाई नहीं है और जहां दर्ज करें पृष्ठ को फिर से लोड नहीं करता है


94

मैं HTML फॉर्म बनाने के लिए सबसे साफ तरीका खोज रहा हूं जिसमें सबमिट बटन नहीं है। यह अपने आप में काफी आसान है, लेकिन मुझे फॉर्म को फिर से लोड करने से रोकना होगा जब सबमिशन जैसी चीजें हो जाती हैं (उदाहरण के लिए, Enterकिसी टेक्स्ट फील्ड में हिट करना )।


क्या आप चाहते हैं कि यह कभी जमा न हो?
अक्टूबर को TheTheCreek

यदि आपके पास एक एकल इनपुट के साथ बस एक <फॉर्म> है, तो यह एक पाठ क्षेत्र है जिसे आपको दर्ज करने पर सबमिट नहीं करना चाहिए, क्या यह होना चाहिए?
ज़ैक द ह्यूमन

मैं चाहता हूं कि यह कुछ अन्य शर्त पर प्रस्तुत हो (वास्तव में एक निश्चित बटन मारना)। समस्या यह है कि मैं ऐसा करने में असमर्थ रहा हूं, जबकि पाठ क्षेत्र में 'प्रवेश' करने के लिए व्यवहार किया जा रहा है। तो मेरा सावधानीपूर्वक बनाया गया फॉर्म, जहां आपको एक्स, वाई और जेड करने की आवश्यकता है, इसे सबमिट करने के लिए उपयोगकर्ता द्वारा दर्ज किए गए गलत तरीके से सबमिट किया जा सकता है।
मैट रॉबर्ट्स

जवाबों:


44

फॉर्म के लिए एक ऑनस्बमिट हैंडलर जोड़ें (या तो सादे js या jquery $ ()। सबमिट करें (fn)), और तब तक गलत लौटें जब तक कि आपकी विशिष्ट शर्तें पूरी न हों।

जब तक आप फॉर्म जमा नहीं करना चाहते हैं, तब तक - जिस स्थिति में, केवल फॉर्म एलीमेंट पर 'एक्शन' की विशेषता क्यों नहीं छोड़नी चाहिए?


150
एक actionविशेषता के बिना एक फॉर्म मानकों के अनुसार एक फॉर्म नहीं है - और वास्तव में कुछ ब्राउज़रों में एक पृष्ठ फिर से लोड होगा। मैंने पाया है कि यह action="javascript:void(0);"अच्छी तरह से काम करता है।
डच ४३२

डच का जवाब पूरी तरह से काम करता है। फ़ायरफ़ॉक्स सिर्फ पृष्ठ को ताज़ा कर रहा था।
आइमैग्रोट

1
@ Dutchie432 को टिप्पणी के बजाय इसे उत्तर में बनाना चाहिए। तब यह शीर्ष पर अपना रास्ता बना लेगा जहां यह है। वैकल्पिक रूप से, केप्राइम अपने जवाब को समायोजित कर सकता है, क्योंकि कार्रवाई को छोड़ने से मेरे लिए काम नहीं किया गया ...
ऋषि

211

आप action="javascript:void(0);"पृष्ठ पुनः लोड को रोकने और HTML मानक बनाए रखने के लिए अपने फ़ॉर्म में शामिल करना चाहते हैं ।


4
प्रवेश करते समय सबमिट बटन डिफ़ॉल्ट कार्रवाई को दबाने के लिए सिर्फ 2 दिन बिताए गए, क्योंकि यद्यपि कार्रवाई हुई, पृष्ठ फिर से लोड हो रहा है (फ़ायरफ़ॉक्स)। फार्म पर कार्रवाई के रूप में जावास्क्रिप्ट शून्य जोड़ना इसे तय किया। उसके लिए धन्यवाद।
टोनी पायने

इस अतिरिक्त उत्तर के लिए धन्यवाद। यह अभी भी काम करता है - लेकिन क्या यह अभी भी 2016 में "कला की स्थिति" समाधान है?
लो_रेंट्स

1
@low_rents मैं अभी भी हर समय इसका उपयोग करता हूं और व्यक्तिगत रूप से एक बेहतर समाधान नहीं मिला है।
21:21 बजे Dutchie432

1
मुख्य कुंजी दर्ज करते समय पृष्ठ को पुनः लोड करने के लिए सटीक और एक महान समाधान के लिए धन्यवाद :) सर्वश्रेष्ठ समाधान।
इमरान रफीक राथर

9

बस इस घटना को अपने पाठ क्षेत्र में जोड़ें। यह Enter दबाने पर एक सबमिशन को रोकेगा, और आप सबमिट बटन या कॉल फॉर्म.सुबमिट () आवश्यकतानुसार जोड़ें:

onKeyPress="if (event.which == 13) return false;"

उदाहरण के लिए:

<input id="txt" type="text" onKeyPress="if (event.which == 13) return false;"></input>

1
उसके लिये आपका धन्यवाद। मुझे डर है कि आपके उत्तर की स्पष्टता ने मुझे पहले के उत्तर की शुद्धता स्पष्ट कर दी है ताकि आपको स्वीकृत उत्तर न मिले लेकिन आपको मेरा आभार और एक उत्थान मिलता है!
मैट रॉबर्ट्स

2
धन्यवाद। मदद करने में खुशी। मैं वैसे भी लाइमलाइट के लिए कभी नहीं था। ;)
GenericMeatUnit

5

जब आप एक फॉर्म में एन्टर प्रेस करते हैं, तो फॉर्म का प्राकृतिक व्यवहार निमग्न हो जाता है, इस व्यवहार को रोकने के लिए, जो स्वाभाविक नहीं है, आपको इसे टालना पड़ता है (डिफ़ॉल्ट व्यवहार), jquery के साथ:

$("#yourFormId").on("submit",function(event){event.preventDefault()})

4

एक विचार:

<form method="POST" action="javascript:void(0);" onSubmit="CheckPassword()">
    <input id="pwset" type="text" size="20" name='pwuser'><br><br>
    <button type="button" onclick="CheckPassword()">Next</button>
</form>

तथा

<script type="text/javascript">
    $("#pwset").focus();
    function CheckPassword()
    {
        inputtxt = $("#pwset").val();
        //and now your code
        $("#div1").load("next.php #div2");
        return false;
    }
</script>

1

हल करने के दो तरीके:

  1. फॉर्म का एक्शन वैल्यू "जावास्क्रिप्ट: शून्य (0);" है।
  2. सबमिट करने से रोकने के लिए फ़ॉर्म के लिए कीपर ईवेंट श्रोता जोड़ें।

कीप्रैस इवेंट (जैसे कि की एंटर करें) को सुनना आपको मुसीबत में ला सकता है textarea, और संभवतः स्वत: पूर्णता या ड्रॉपडाउन का चयन कर सकता है, और मोबाइल परेशानी का दूसरा स्रोत हो सकता है।
भाग्योदय

0

पहली प्रतिक्रिया सबसे अच्छा समाधान है:

फॉर्म के लिए एक ऑनस्बमिट हैंडलर जोड़ें (या तो सादे js या jquery $ ()। सबमिट करें (fn)), और तब तक गलत लौटें जब तक कि आपकी विशिष्ट शर्तें पूरी न हों।

Jquery के साथ और अधिक विशिष्ट:

$('#your-form-id').submit(function(){return false;});

जब तक आप फॉर्म जमा नहीं करना चाहते हैं, तब तक - जिस स्थिति में, केवल फॉर्म एलीमेंट पर 'एक्शन' की विशेषता क्यों नहीं छोड़नी चाहिए?

Chrome एक्सटेंशन लिखना एक उदाहरण है जहां आपके पास उपयोगकर्ता इनपुट के लिए एक फ़ॉर्म हो सकता है, लेकिन आप इसे सबमिट नहीं करना चाहते हैं। यदि आप क्रिया का उपयोग करते हैं = "जावास्क्रिप्ट: शून्य (0);", तो कोड शायद काम करेगा लेकिन आप इस समस्या को समाप्त कर देंगे जहां आपको इनलाइन जावास्क्रिप्ट चलाने के बारे में एक त्रुटि मिलती है।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.