2010-07-29 6 views
17

Im mit einem Auswahlfeld von Land, wenn Benutzer ein Land auswählen, dann Zweig hinzufügen erscheint und Benutzer hinzufügen Filialen unter diesem Land, aber wenn Benutzer Land dann ändern möchten Alle Zweige in Bezug auf dieses Land sollten vernichtet werden. vor dem Ändern eines Landes ein Bestätigungsfeld erscheint und Warnung anzeigen .. alles funktioniert gut, aberWie zu verhindern, Selectbox Wert zu ändern, wenn ich Nein sage, um zu bestätigen

wenn ich auf 'Abbrechen' auf bestätigen Feld klicken, dann Zweige bleibt dort, aber Feld Wert geändert in neues Land (auch ich klicke auf Abbrechen)

Ich brauche, dass, wenn Benutzer abbrechen, um Land zu ändern, dann Kastenwert auch vorheriges Land wählen würde.

bitte sagen, wie es mit JQuery zu tun mein Code ist unten angegeben

<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(); 
    } 

Antwort

18

Sie können nur den vorherigen Wert speichern und wieder eingestellt, wenn nötig, wie folgt aus:

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 
}); 

Or verwenden .data() wie @Gaby schlägt vor, wie folgt aus:

$("#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, schreiben gleiches Material, aber das '.data mit()', so dass es .. für mehrere Auswahlbox funktionieren könnte –

+1

@Gaby - Wenn Sie nicht, dass immer noch schreiben ich es hinzufügen würde als eine Option, wenn Sie dann sind, werde ich es in Ruhe lassen :) –

+1

@Gaby - Ich habe es hier der Vollständigkeit halber hinzugefügt, wenn Sie Ihre Meinung ändern und es hinzufügen, bitte kommentieren, ich werde es hier und +1 entfernen deine. –

0

Ich poste diese Antwort auf die Gefahr des Spottes, weil ich zugegebenermaßen ziemlich noob bei diesem Zeug bin (habe nur ein oder zwei Monate gelernt), aber ich war in der Lage, mit einer ähnlichen Situation umzugehen (Zeitzonen zu ändern).

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

Dann in meiner html ich Daten-originaltimezone = "was auch immer" in der Auswahl enthalten. Ich hatte die Klasse timezonedropdown für die Auswahl. Ich hoffe, das hilft! :)

0

Unten Lösung für mich gearbeitet. Zunächst einmal heißt Onfocus. Dieses Ereignis behält den aktuellen Wert in einem Attribut "PrvSelectedValue". Wenn onchange aufgerufen wird, setzen wir den vorherigen Wert, wenn der Benutzer das Bestätigungs-Popup abbricht. Return false wird verwendet, um das Postback in ASP.NET zu verhindern.

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

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

></select> 
Verwandte Themen