2010-07-29 13 views
17

की पुष्टि करने के लिए कहता हूं तो देश के एक चुनिंदा बॉक्स का उपयोग करने के लिए मैं कहता हूं कि जब कोई देश चुनता है तो शाखा लिंक जोड़ता है और उपयोगकर्ता उस देश के अंतर्गत शाखाएं जोड़ता है, लेकिन जब उपयोगकर्ता देश बदलना चाहता है तो उस देश के बारे में सभी शाखाओं को नष्ट कर दिया जाना चाहिए। किसी देश को बदलने से पहले एक पुष्टिकरण बॉक्स प्रकट होता है और चेतावनी दिखाता है .. सबकुछ ठीक काम कर रहा है लेकिनअगर मैं

अगर मैं पुष्टिकरण बॉक्स पर 'रद्द करें' पर क्लिक करता हूं तो शाखाएं वहां रहती हैं लेकिन बॉक्स मूल्य का चयन नए देश में बदल जाता है (यहां तक ​​कि मैं रद्द करने पर क्लिक करता हूं)

मुझे यह चाहिए कि यदि उपयोगकर्ता देश को बदलने के लिए रद्द कर देता है तो बॉक्स वैल्यू का चयन भी पिछले देश होगा।

कृपया कैसे JQuery साथ यह करने के लिए बता मेरी कोड नीचे दी गई है

<form> 
<table> 
    <tr> 
     <td >Select Country :</td> 
     <td > 
     <select name="country_id" id="country" class="selectbox" title="Please select country" validate="required:true" onchange="javascript:showBranch();" > 
     <option value="" >Select Country </option> 
     <option value="00002" > Afghanistan</option> 
     <option value="00054" > Croatia</option> 
     <option value="00060" > Dominica</option> 
     <option value="00062" > Ecuador</option> 
     <option value="00064" > El Salvador</option> 
     <option value="00067" > Estonia</option> 
     <option value="00099" > India</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td> 
     <div id="branches"> 
     <!-- Raw Branch Details--> 
      <div><span><a title="First Branch" href="">First</a></span></div> 
      <div><span><a title="Second Branch" href="">Second</a></span></div> 
      <div><span><a title="Third Branch" href="">Third</a></span></div>     
     </div> 
     <div id="brancherror"></div> 
     </td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td align="left"> 
     <span id="branchLink" style="display:none" > 
     <a href="#" class="thickbox" id="branchhref">Add Branch(es)</a></span> 
    </td> 
    </tr> 
</table> 
</form> 

function showBranch() 
    { 
     var countryid = jQuery('#country').val(); 
     if (jQuery("#branches>div").size()) 
     { 
      if (confirm('If country has been changed then data corresponding to present branches will lost.Do you want to continue?')) 
      { 
       jQuery('#branches').html(''); 
      } 

      jQuery('#branchhref').attr({href: "index.php?option=com_advertise&view=createbranch&format=raw&country=" + countryid + "&KeepThis=true&TB_iframe=true&height=500&width=900",title: 'Add Branch'}); 
     } 

     else 
     { 
      jQuery('#branchhref').attr({href : "index.php?option=com_advertise&view=createbranch&format=raw&country=" + countryid + "&KeepThis=true&TB_iframe=true&height=500&width=900",title:'Add Branch'}); 
      return true; 
     } 
     jQuery('#branchLink').show(); 
    } 

उत्तर

18

तुम सिर्फ पिछले मान की दुकान है और इसे वापस सेट यदि आवश्यक हो तो, इस तरह कर सकते हैं:

var countryVal; 
$("#country").change(function() { 
    var newVal = $(this).val(); 
    if (!confirm("Are you sure you wish to destroy these country branches?")) { 
    $(this).val(countryVal); //set back 
    return;     //abort! 
    } 
    //destroy branches 
    countryVal = newVal;  //store new value for next time 
}); 

या .data()@Gaby के रूप में उपयोग करें, इस तरह:

$("#country").change(function() { 
    var newVal = $(this).val(); 
    if (!confirm("Are you sure you wish to destroy these country branches?")) { 
    $(this).val($.data(this, 'val')); //set back 
    return;       //abort! 
    } 
    //destroy branches 
    $.data(this, 'val', newVal);  //store new value for next time 
}); 
+3

+1, एक ही सामान लिख रहा था लेकिन '.data (का उपयोग करते हुए)' इतना है कि यह कई का चयन करें बॉक्स के लिए काम कर सकता था .. –

+1

@Gaby - आप लिख नहीं कर रहे हैं कि अभी भी मैं इसे जोड़ देंगे एक विकल्प के रूप में, यदि आप हैं तो मैं इसे अकेला छोड़ दूंगा :) –

+1

@ गैबी - मैंने इसे पूर्णता के लिए यहां जोड़ा, अगर आप अपना मन बदलते हैं और इसे जोड़ते हैं, तो कृपया टिप्पणी करें, मैं इसे यहां हटा दूंगा और +1 आपका अपना। –

0

मैं इस जवाब को उपहास के जोखिम पर पोस्ट कर रहा हूं क्योंकि मैं इस सामान पर स्वीकार्य रूप से सुंदर नोब हूं (केवल एक या दो महीने सीख रहा हूं), लेकिन मैं ऐसा ही स्थिति (समय क्षेत्र बदलना) को संभालने में सक्षम था:

$(".timezonedropdown").change(function() { 
    var newVal = $(this).val(); 
    if(!confirm("Are you sure?")) { 
     $(this).val($(this).closest('select').attr("data-originaltimezone")); 
    } 
}); 

फिर मेरे एचटीएमएल में मैंने डेटा-उत्पत्तिटाइज़ोन = "जो भी" चयन में शामिल किया था। मेरे पास चयन के लिए क्लास टाइमज़ोन्रोपडाउन भी था। उम्मीद है की वो मदद करदे! :)

0

नीचे समाधान मेरे लिए काम किया। सबसे पहले ऑनफोकस कहा जाता है। यह घटना वर्तमान मान को "PrvSelectedValue" विशेषता में रखती है। दूसरा रूप से बदले जाने पर, हम पिछले मान को सेट करते हैं यदि उपयोगकर्ता पुष्टिकरण पॉपअप रद्द कर देता है। झूठी झूठी का उपयोग ASP.NET में पोस्टबैक को रोकने के लिए किया जाता है।

<select 
onfocus="this.setAttribute('PrvSelectedValue',this.value);" 

onchange="if(confirm('Do you want to change?')==false){ this.value=this.getAttribute('PrvSelectedValue');return false; }" 

></select> 
संबंधित मुद्दे