Javascript 如何使已取消的警报在警报“取消”后返回到相同的前一选项?

Javascript 如何使已取消的警报在警报“取消”后返回到相同的前一选项?,javascript,jquery,html,alert,option,Javascript,Jquery,Html,Alert,Option,在警报中选择“取消”后,如何使选项框返回到以前选择的相同位置 现在代码可以工作了,现在它转到一个被禁用的选项,名为“公共语言”,它没有任何功能。这不是它应该如何工作的 我想要的是在警报中选择“取消”后返回到以前选择的选项 JavaScript: HTML: 现在它可以工作了,但问题是它转到了名为公共语言的选项的1值:禁用的值。我认为必须有一种方法使其转到另一个值,例如,如果不是以前选择的值,则从选项中自动选择名为English的值 加载表单后,将状态缓存到对象中。您可以编写一个函数来更新这个缓存

在警报中选择“取消”后,如何使选项框返回到以前选择的相同位置

现在代码可以工作了,现在它转到一个被禁用的选项,名为“公共语言”,它没有任何功能。这不是它应该如何工作的

我想要的是在警报中选择“取消”后返回到以前选择的选项

JavaScript:

HTML:


现在它可以工作了,但问题是它转到了名为公共语言的选项的1值:禁用的值。我认为必须有一种方法使其转到另一个值,例如,如果不是以前选择的值,则从选项中自动选择名为English的值

加载表单后,将状态缓存到对象中。您可以编写一个函数来更新这个缓存对象,这样一旦成功,您就可以轻松地更新缓存,以备将来发生取消或错误时使用。可以使用另一个函数循环缓存对象并设置属性和值。这是我所知道的唯一不使用页面重新加载或通过ajax websocket等重新加载数据的方法。

以下是您的解决方案总代码:

<script type="text/javascript">
$(document).on('click', ':not(form)[data-confirm]', function(e){
    if(!confirm($(this).data('confirm'))){
        e.stopImmediatePropagation();
        e.preventDefault();
    }
});

$(document).on('submit', 'form[data-confirm]', function(e){
    if(!confirm($(this).data('confirm'))){
        e.stopImmediatePropagation();
        e.preventDefault();
    }
});
var arr = [];
$(document).on('input', 'select', function(e){
    arr.push($(this)[0].selectedIndex)
    var msg = $(this).children('option:selected').data('confirm');
    if(msg != undefined && !confirm(msg)){
        $(this)[0].selectedIndex = arr[arr.length-2];
    }
});
</script>  
这里没有任何变化:

<select name="LangF" id="opt">
<option value="" disabled>Common Languages:</option>
<option value="zh-CN">Chinese (Simplified)</option>
<option selected value="en">English</option>
<option value="fr">French</option>
<option value="de">German</option>
<option value="ru">Russian</option>
<option value="es">Spanish</option>
<option value="" disabled>&#8212;</option>
<option value="auto" data-confirm=" The ´´Automatic Language Detection´´ does not detect laguadges in frames / sandbox. Are you sure you want to select this option? ">Auto Detect</option>
<option value="" disabled>&#8212;</option>
<option value="" disabled>Other Languages:</option>
<option value="af">Afrikaans</option>
<option value="sq">Albanian</option>
<option value="ar">Arabic</option>
<option value="hy">Armenian</option>
<option value="az">Azerbaijani</option>
</select>

它确实起作用。

现在它起作用了,但问题是它转到了选项的1值,即公共语言:禁用的值。我想一定有办法让它转到另一个值,例如,如果不是以前选择的值,则从选项中自动选择名为English的值。我想我现在明白了。用户选择and选项,并且select元素的重置默认为第一个项目,而不是提交表单时选择的项目,并且用户取消了提交。您仍然可以缓存所选内容。添加事件侦听,在更改select语句时,更新缓存的元素。然后在取消时,让表单重置,然后更新选择的选项。如果您只想使用第一个未禁用的选项,请使用以下内容:$$'opt option]'。attr'disabled','false'[0]。prop'selected','selected';它有点长,但是现在添加了更新。好吧,要么我很困惑,要么我不知道怎么做。我无法使您的代码与我使用的代码一起工作。你能给我举个例子吗。也许我做错了什么。好吧,如果你选择英语,这个选择的语言将被推到我们全局声明的数组中,然后你将选择自动检测,会弹出一个框,当单击取消时,选项将保留在相同的旧语言上,即英语@Seekload同意这正是我想要它的工作方式,遗憾的是它在我的页面上不起作用。我不知道我把你的代码弄错了什么?是的,没错,我不确定这个函数结构,但我会注意的@Seekload是的,不知怎么会有很多if语句@满载
<script type="text/javascript">
$(document).on('click', ':not(form)[data-confirm]', function(e){
    if(!confirm($(this).data('confirm'))){
        e.stopImmediatePropagation();
        e.preventDefault();
    }
});

$(document).on('submit', 'form[data-confirm]', function(e){
    if(!confirm($(this).data('confirm'))){
        e.stopImmediatePropagation();
        e.preventDefault();
    }
});
var arr = [];
$(document).on('input', 'select', function(e){
    arr.push($(this)[0].selectedIndex)
    var msg = $(this).children('option:selected').data('confirm');
    if(msg != undefined && !confirm(msg)){
        $(this)[0].selectedIndex = arr[arr.length-2];
    }
});
</script>  
<select name="LangF" id="opt">
<option value="" disabled>Common Languages:</option>
<option value="zh-CN">Chinese (Simplified)</option>
<option selected value="en">English</option>
<option value="fr">French</option>
<option value="de">German</option>
<option value="ru">Russian</option>
<option value="es">Spanish</option>
<option value="" disabled>&#8212;</option>
<option value="auto" data-confirm=" The ´´Automatic Language Detection´´ does not detect laguadges in frames / sandbox. Are you sure you want to select this option? ">Auto Detect</option>
<option value="" disabled>&#8212;</option>
<option value="" disabled>Other Languages:</option>
<option value="af">Afrikaans</option>
<option value="sq">Albanian</option>
<option value="ar">Arabic</option>
<option value="hy">Armenian</option>
<option value="az">Azerbaijani</option>
</select>