[英]Set specific value to Select input on jQuery return false?
我有一个选择输入下拉列表:
<select class="redblue">
<option value="Red or Blue?" selected>Red or Blue?</option>
<option value="RED">RED</option>
<option value="BLUE">BLUE</option>
</select>
<select class="colorslave">
<option value="none" selected></option>
<option value="RED">RED</option>
<option value="BLUE">BLUE</option>
</select>
每次从.redblue中选择一种颜色时,一旦确认,.colorslave就会显示相同的颜色。 我需要.redblue返回默认值“红色还是蓝色?” 确认后,确定为“确定”或“取消”。
现在,它只能通过OK才能使用-在CANCEL上,“返回false”; 必须阻止它或其他东西:
$('.redblue').change(function(){
if($(this).val() == 'RED'){
var color = confirm("You are about to choose RED.");
if (color) {
$('.colorslave').val('RED');
$('.redblue').val('Red or Blue?');//works
}
}else{
return false;
$('.redblue').val('Red or Blue?');//doesn't work
}
});
$('.redblue').change(function(){
if($(this).val() == 'BLUE'){
var color = confirm("You are about to choose BLUE.");
if (color) {
$('.colorslave').val('BLUE');
$('.redblue').val('Red or Blue?');//works
}
}else{
return false;
$('.redblue').val('Red or Blue?');//doesn't work
}
});
这是一块FIDDLE 。
您将在标记为“无效”的代码行之前立即返回false。 当然,它们不会执行。
此外,您的代码设计很奇怪,因为您将颜色选择调用视为完全独立的代码块,而它们应该是单个if / else语句。 以下代码仍然无法正确重置“ redblue”下拉列表(我不确定是什么原因造成的),但是具有更好的设计:
$('.redblue').change(function(){
if($(this).val() == 'RED'){
var color = confirm("You are about to choose RED.");
if (color) {
$('.colorslave').val('RED');
$('.redblue').val('Red or Blue?');
}else{
$('.redblue').val('Red or Blue?');
return false;
}
}else if($(this).val() == 'BLUE'){
var color = confirm("You are about to choose BLUE.");
if (color) {
$('.colorslave').val('BLUE');
$('.redblue').val('Red or Blue?');
}else if (!color){
$('.redblue').val('Red or Blue?');
return false;
}
}
});
这应该是您进行调试的更好的起点。 我不是jQuery大师,所以我认为阻止正常重置还有其他事情发生,但是我认为进行上述更改应该会有所帮助。
return false
后,您尝试执行代码。 尝试像这样反转两行:
从:
return false;
$('.redblue').val('Red or Blue?');//doesn't work
至:
$('.redblue').val('Red or Blue?');//doesn't work
return false;
我已经解决了您的问题,您可以在jsfiddle中看到解决方案
$('.redblue').change(function () {
if ($(this).val() == 'RED') {
var color = confirm("You are about to choose RED.");
if (color) {
$('.colorslave').val('RED');
$('.redblue').val('Red or Blue?');
} else {
$('.redblue').val('Red or Blue?'); //this code doesn't work
}
} else if ($(this).val() == 'BLUE') {
var color2 = confirm("You are about to choose BLUE.");
if (color2) {
$('.colorslave').val('BLUE');
$('.redblue').val('Red or Blue?');
} else {
$('.redblue').val('Red or Blue?'); //this code doesn't work
}
}
});
基本上,问题在于您需要在if语句下无法确定else语句,该if语句确定警报是正常还是取消。
您可以通过一种非常有效的方法来获取代码,以使其在句子之外重新设置为默认值,因此它将如下所示:
$('.redblue').change(function(){
if($(this).val() == 'RED') {
var color = confirm("You are about to choose RED.");
if (color) {
$('.colorslave').val('RED');
}
} else if($(this).val() == 'BLUE') {
var color = confirm("You are about to choose BLUE.");
if (color) {
$('.colorslave').val('BLUE');
}
}
$('.redblue').val('Red or Blue?');
});
更新的提琴: http : //jsfiddle.net/76f0qdqn/4/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.