【问题标题】:Set specific value to Select input on jQuery return false?将特定值设置为在 jQuery 上选择输入返回 false?
【发布时间】:2014-11-28 01:15:46
【问题描述】:

我有一个选择输入下拉列表:

<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。

现在,它只适用于 OK - 在 CANCEL 上,“return 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

【问题讨论】:

  • 请问您的确认函数返回什么?

标签: jquery select input


【解决方案1】:

我已经解决了你的问题,你可以看到解决方案here in 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
        }
    }
});

基本上问题是您需要 else 语句,该语句在 if 语句下不起作用,用于确定警报是 ok 还是 cancel。

【讨论】:

  • 非常感谢,这正是我所需要的!已接受您的回答,但还不能 +1。
  • 没问题,很高兴能帮上忙。
【解决方案2】:

您尝试在return false 之后执行代码。尝试像这样反转这两行:

发件人:

return false;
$('.redblue').val('Red or Blue?');//doesn't work

收件人:

$('.redblue').val('Red or Blue?');//doesn't work
return false;

【讨论】:

    【解决方案3】:

    您在标记为“不起作用”的代码行之前立即返回 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 之前和之后都尝试过,但都没有奏效。
    • 嗯,事实证明我的代码确实可以正常工作。我在小提琴中重试了它,并且重置正在按预期进行。也许这是之前的页面缓存问题。无论哪种方式,我都可以看到 Jeremy W 也帮助了你。很高兴您解决了您的问题。
    【解决方案4】:

    一种非常有效的方法,您只需获取代码以使其在 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2018-08-23
      • 2015-06-25
      • 2022-11-10
      • 1970-01-01
      • 2014-12-24
      • 2011-04-30
      相关资源
      最近更新 更多