Javascript 如果返回false,则在下拉列表中设置以前选择的值
我有两个下拉列表。一个是最小尺寸,另一个是最大尺寸。我正在检查最小选择框的选定值是否大于最大选择框的选定值,反之亦然。它工作得很好 我被困在一个地方,如果验证返回false,我想将上一个值设置为“selected”。它不允许我这么做 演示在这里-- JS代码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
$("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那又怎样真的会发生这种情况吗?如果用户不点击而专注于选择
,则此操作将失败如果用户不点击而专注于选择
,则此操作将失败