首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果我说不确认,如何防止更改选择框值

如果我说不确认,如何防止更改选择框值
EN

Stack Overflow用户
提问于 2010-07-29 19:00:15
回答 4查看 28.8K关注 0票数 23

我使用的是一个国家的选择框,当用户选择一个国家,然后添加分支机构链接出现,用户添加下该国家的分支机构,但当用户想要更改国家,那么所有关于该国家的分支机构应该被删除。在更改国家/地区之前,会出现一个确认框,显示warning..everything工作正常,但是

如果我点击确认框上的‘取消’,分支仍然在那里,但选择框值更改为新的国家(即使我点击取消)

我需要的是,如果用户取消更改国家,那么选择框值也将是以前的国家。

请告诉我如何使用JQuery来做这件事,我的代码如下

代码语言:javascript
复制
<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();   
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-29 19:04:47

您可以只存储之前的值,并在需要时将其设置回去,如下所示:

代码语言:javascript
复制
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
});

或者按照@Gaby的建议使用.data(),如下所示:

代码语言:javascript
复制
$("#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
});
票数 26
EN

Stack Overflow用户

发布于 2017-04-24 18:49:02

下面的解决方案对我很有效。首先,调用onfocus。此事件将当前值保存在属性"PrvSelectedValue“中。第二次调用onchange,如果用户取消确认,我们设置前一个值,popup.return在ASP.NET中使用false来阻止回发。

代码语言:javascript
复制
<select   
onfocus="this.setAttribute('PrvSelectedValue',this.value);" 

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

></select>
票数 4
EN

Stack Overflow用户

发布于 2015-07-26 07:19:15

我冒着被嘲笑的风险贴出这篇回复,因为我对这个东西确实是个新手(只学了一两个月),但我能够处理类似的情况(改变时区),只是这样做:

代码语言:javascript
复制
$(".timezonedropdown").change(function() {
    var newVal = $(this).val();
    if(!confirm("Are you sure?")) {
        $(this).val($(this).closest('select').attr("data-originaltimezone"));
    }
});

然后,在我的html中,我在select中包含了data-originaltimezone="whatever“。我也为select设置了类timezonedropdown。希望这能有所帮助!:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3361742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档