2010-11-27 16 views
11

मैं उपयोगकर्ता से पूछने के लिए एक डिलीट बटन में एक पुष्टिकरण संवाद जोड़ना चाहता हूं कि यह ठीक है या चयनित आइटम को हटा नहीं रहा है।जावास्क्रिप्ट पुष्टि संवाद

यदि नहीं, तो कुछ भी खुश नहीं होना चाहिए, अन्यथा एक यूआरएल निष्पादित किया जाना चाहिए।

मुझे पता है कि कुछ जावास्क्रिप्ट कोड के माध्यम से इसे कैसे महसूस किया जाए, लेकिन मैं ऐसे समाधान की तलाश में हूं जिसमें कम कोड है। मेरा मतलब है उदा। :

<a href="mysite.de/xy/delete" onClick="...">Delete</a> 

क्या संपूर्ण कार्यक्षमता ऑनक्लिक तत्व में हेडर में कुछ अतिरिक्त जावास्क्रिप्ट के बिना रखना संभव है?

+0

जावास्क्रिप्ट में विशेषज्ञ नहीं है। हालांकि ऑनक्लिक में एक फ़ंक्शन लिखना संभव नहीं होगा? – starcorn

उत्तर

18

बेहतर (हालांकि आदर्श से बहुत दूर!): इसे चारों ओर घुमाएं। जब तक आपको जावास्क्रिप्ट नहीं मिलता है, तब तक लिंक को कुछ भी न करने दें:

<a href="#" 
    onclick="if confirm('Sure?') { window.location='http://mysite.de/xy/delete';}"> 
    Click to delete 
</a> 

यह कम से कम जावास्क्रिप्ट के बिना काम करने के लिंक को रोकता है। इससे Google द्वारा गलती से लिंक किए जाने वाले लिंक का जोखिम भी कम हो जाता है, या यहां तक ​​कि कुछ स्थानीय प्लगइन भी। (छवि अगर आपके पास एक प्लगइन था जो थंबनेल के रूप में लोड/दिखाने का प्रयास करेगा) लिंक के होवर पर लक्षित पृष्ठ!)

फिर भी, यह समाधान आदर्श नहीं है। आप वास्तव में यूआरएल पर ब्राउज़ करेंगे, और इसके कारण यूआरएल इतिहास में दिखाई दे सकता है। आप वास्तव में बॉब को हटा सकते हैं, एक नया बॉब बना सकते हैं, और उसके बाद ब्राउज़र में 'बैक' पर क्लिक करके दुर्घटना से इसे हटा सकते हैं!

वांछित कार्रवाई पोस्ट करने के लिए जावास्क्रिप्ट या एक फॉर्म का उपयोग करने का एक बेहतर विकल्प होगा। आप POST विधि, या तर्कसंगत रूप से बेहतर, DELETE विधि के साथ सर्वर से अनुरोध कर सकते हैं। इससे यूआरएल को अनुक्रमित होने से भी रोका जाना चाहिए।

+0

सहमत हैं, यह थोड़ा बेहतर है। उदाहरण के लिए ब्राउज़र इतिहास में दिखाई देने वाले पृष्ठ से जुड़े संभावित जोखिम हैं। – cspolton

+0

मैं लिंक प्रिंट करने के लिए PHP का उपयोग कर रहा हूं, कोई विचार यह क्यों काम नहीं कर रहा है ?: echo ' '; –

27

आप return कर सकते हैं confirm() (जो true/false रिटर्न), इस तरह:

<a href="mysite.de/xy/delete" onClick="return confirm('You sure??');">Delete</a> 

You can test it here

+1

तकनीकी रूप से यह काम करेगा, लेकिन मैं अभी भी इस तरह की सिफारिश नहीं कर सकता, क्योंकि यह सबसे अच्छा अभ्यास नहीं है। क्रियाएं वास्तव में सर्वर पर पोस्ट की जानी चाहिए। – cspolton

+0

मुझे लगता है कि 'GET' या 'POST' के बजाय' DELETE' ... – wprl

5

पर विचार करें कि क्या होता है उपयोगकर्ता जावास्क्रिप्ट अक्षम है, तो या यदि गूगल के साथ और मकड़ियों आता है संपर्क। क्या आपकी इकाई हटा दी जाएगी?

हटाने के लिए एक फॉर्म पोस्ट करना एक बेहतर तरीका होगा।

+0

मुझे नहीं लगता कि यह डिलीट लिंक सार्वजनिक है, इसलिए यह कोई समस्या नहीं होनी चाहिए। – jwueller

+0

मुझे बैकएंड सेवा के लिए सुविधा की आवश्यकता है जहां जावास्क्रिप्ट को सक्षम किया जाना चाहिए –

+2

यह मानता है कि वहां कोई अन्य सुरक्षा नहीं है ... हालांकि मैं सहमत हूं कि POST कार्यों के लिए उपयोग किया जाना चाहिए। –

2

एक jQuery प्लगइन है जो बस करता है: jquery.confirm

उदाहरण:

<a href="home" class="confirm">Go to home</a> 

जे एस कोड:

$('.confirm').confirm(); 

screenshot

उपयोगकर्ता की पुष्टि करता है, वह <a> के लिंक पर भेज दिया जाएगा, और कुछ नहीं होता है।

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