Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果返回false,则在下拉列表中设置以前选择的值_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如果返回false,则在下拉列表中设置以前选择的值

Javascript 如果返回false,则在下拉列表中设置以前选择的值,javascript,jquery,html,Javascript,Jquery,Html,我有两个下拉列表。一个是最小尺寸,另一个是最大尺寸。我正在检查最小选择框的选定值是否大于最大选择框的选定值,反之亦然。它工作得很好 我被困在一个地方,如果验证返回false,我想将上一个值设置为“selected”。它不允许我这么做 演示在这里-- JS代码 $("select[name=size-min],select[name=size-max]").focus(function() { // Store the current value on focus, before it c

我有两个下拉列表。一个是最小尺寸,另一个是最大尺寸。我正在检查最小选择框的选定值是否大于最大选择框的选定值,反之亦然。它工作得很好

我被困在一个地方,如果验证返回false,我想将上一个值设置为“selected”。它不允许我这么做

演示在这里--

JS代码

 $("select[name=size-min],select[name=size-max]").focus(function() {
   // Store the current value on focus, before it changes
   previous = this.value;
 }).change(function() {

   var selname = $(this).attr('name');
   var selval = $(this).val();
   var e1 = document.getElementById("size-min");
   var minval = e1.options[e1.selectedIndex].value;
   var e2 = document.getElementById("size-max");
   var maxval = e2.options[e2.selectedIndex].value;

   alert(previous);

   if (selname == "size-min" && parseInt(minval) > parseInt(maxval) && maxval != "") {
     $('#size-min').val(previous);
     alert("The minimum size needs to be smaller than maximum size.");
     return false;
   }
   if (selname == "size-max" && parseInt(selval) < parseInt(minval)) {
     $('#size-max').val(previous);
     alert("The maximum size needs to be greater than minimum size.");
     return false;
   }

 });
$(“选择[name=size min],选择[name=size max]”)。焦点(函数(){
//在更改当前值之前,将其存储在焦点上
previous=此值;
}).change(函数(){
var selname=$(this.attr('name');
var selval=$(this.val();
var e1=document.getElementById(“最小大小”);
var minval=e1.options[e1.selectedIndex].value;
var e2=document.getElementById(“最大大小”);
var maxval=e2.options[e2.selectedIndex].value;
警报(先前);
如果(selname==“size min”&&parseInt(minval)>parseInt(maxval)&&maxval!=”){
$('最小尺寸').val(上一个);
警报(“最小大小需要小于最大大小。”);
返回false;
}
如果(selname==“size max”&&parseInt(selval)

我想达到的目标是否可能呢。非常感谢您的任何帮助或建议。

这并不是一个真正的答案:但要证明您的逻辑是正确的(也许还要更多地利用jQuery的功能)

函数init(){
var-previous;
$(“.minmax”).focus(函数(){
//在更改当前值之前,将其存储在焦点上
previous=此值;
}).更改(功能(e){
if(parseInt($(“#size max”).val())

1.
2.
3.
4.
5.
1.
2.
3.
4.
5.

这并不是一个真正的答案:但要证明您的逻辑是正确的(也许还要更多地利用jQuery的特性)

函数init(){
var-previous;
$(“.minmax”).focus(函数(){
//在更改当前值之前,将其存储在焦点上
previous=此值;
}).更改(功能(e){
if(parseInt($(“#size max”).val())

1.
2.
3.
4.
5.
1.
2.
3.
4.
5.

在Firefox
上,如果输入已经聚焦,则似乎at
.focus()
不会触发-例如,当您在同一个组合框上更正我们的选项时-之前的
不会更改,因为它已经聚焦

.focus()
事件替换为
.click()
时,您的代码应该可以工作


因此,在选择新选项之前,无论特定的组合框是否已聚焦,都会保存上一个选项。

似乎Firefox上的at
.focus()
如果输入已经聚焦,则不会触发该事件-例如,当您在同一个组合框上更正我们的选项时-先前的
不会更改,因为它已经聚焦

.focus()
事件替换为
.click()
时,您的代码应该可以工作



因此,在选择新选项之前,无论特定组合框是否已聚焦,都会保存上一个选项。

您的演示似乎正常。如果我的最小值大于最大值,我的最小值将更改为旧值。它不会更改。这就是问题所在。请尝试将
.focus()
事件替换为
。单击()
尝试使用Chrome,确实如此。问题在于Firefox,我相信你的代码对我也适用,但你所说的“它不改变”是什么意思。这听起来好像是不应该改变的。(fire fox和chrome)您的演示似乎很有效。如果我的最小值大于最大值,我的最小值将更改为旧值。它不会更改。这就是问题所在。请尝试将
.focus()
事件替换为
。单击()
尝试使用Chrome,确实如此。问题在于Firefox,我相信你的代码对我也适用,但你所说的“它不改变”是什么意思。这听起来好像是不应该改变的。(fire fox和chrome版本)这个解决方案很好,但没有解释OP的代码在整个系统中的错误行为browsers@KoCour你对firefox的情况不正确。@Tibrogargan那么到底发生了什么?这个解决方案很好,但没有解释OP的代码在整个系统中的错误行为browsers@KoCour你对firefox的看法不正确。@Tibrogargan那又怎样真的会发生这种情况吗?如果用户不点击而专注于
选择
,则此操作将失败如果用户不点击而专注于
选择
,则此操作将失败