jQuery禁用/启用提交按钮

问:

我有这个 HTML:




我该怎么做这样的事情:

当文本字段为空时,应禁用提交 (disabled=“disabled”)。

在文本字段中键入内容以删除禁用属性时。

如果文本字段再次变为空(文本被删除),则应再次禁用提交按钮。

我试过这样的事情:

$(document).ready(function(){
    
    
    $('input[type="submit"]').attr('disabled','disabled');
    $('input[type="text"]').change(function(){
    
    
        if($(this).val != ''){
    
    
            $('input[type="submit"]').removeAttr('disabled');
        }
    });
});

……但它不起作用。有任何想法吗?

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

答1:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

问题是仅当焦点从输入移开时才会触发更改事件(例如,有人单击输入或标签退出)。尝试使用 keyup 代替:

$(document).ready(function() {
    
    
     $(':input[type="submit"]').prop('disabled', true);
     $('input[type="text"]').keyup(function() {
    
    
        if($(this).val() != '') {
    
    
           $(':input[type="submit"]').prop('disabled', false);
        }
     });
 });

prop('disabled', true) 方法应该在 attr('disabled','disabled') 方法上使用 see the docs on prop()

答2:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

$(function() {
    
    
  $(":text").keypress(check_submit).each(function() {
    
    
    check_submit();
  });
});

function check_submit() {
    
    
  if ($(this).val().length == 0) {
    
    
    $(":submit").attr("disabled", true);
  } else {
    
    
    $(":submit").removeAttr("disabled");
  }
}

答3:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

这个问题已有 2 年历史,但它仍然是一个很好的问题,它是 Google 的第一个结果…但所有现有答案都建议设置和删除 HTML 属性 (removeAttr(“disabled”)) “disabled”,这不是正确的方法。关于属性与属性有很多混淆。

HTML

标记 is called a boolean attribute by the W3C 中 中的“已禁用”。

HTML 与 DOM

引用:

一个属性在 DOM 中;一个属性位于解析为 DOM 的 HTML 中。

https://stackoverflow.com/a/7572855/664132

jQuery

有关的:

尽管如此,关于checked 属性最重要的概念是它不对应于checked 属性。该属性实际上对应于 defaultChecked 属性,应该只用于设置复选框的初始值。选中的属性值不会随着复选框的状态而改变,而选中的属性会。因此,确定是否选中复选框的跨浏览器兼容方法是使用属性…

相关的:

属性通常会影响 DOM 元素的动态状态,而不会更改序列化的 HTML 属性。示例包括输入元素的 value 属性、输入和按钮的 disabled 属性或复选框的 checked 属性。应该使用 .prop() 方法来设置禁用和检查,而不是 .attr() 方法。

$( "input" ).prop( "disabled", false );

概括

要 […] 更改 DOM 属性,例如 […] 表单元素的禁用状态,请使用 .prop() 方法。

(http://api.jquery.com/attr/)

至于问题的禁用更改部分:有一个名为“输入”的事件,但 browser support is limited 它不是 jQuery 事件,所以 jQuery 不会让它工作。更改事件可靠地工作,但在元素失去焦点时触发。所以可以将两者结合起来(有些人也听keyup和paste)。

这是一段未经测试的代码来说明我的意思:

$(document).ready(function() {
    
    
    var $submit = $('input[type="submit"]');
    $submit.prop('disabled', true);
    $('input[type="text"]').on('input change', function() {
    
     //'input change keyup paste'
        $submit.prop('disabled', !$(this).val().length);
    });
});

答4:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

要删除禁用的属性使用,

 $("#elementID").removeAttr('disabled');

并添加禁用属性使用,

$("#elementID").prop("disabled", true);

享受 :)

答5:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

或者对于我们不喜欢在每件小事上都使用 jQ 的人:

document.getElementById("submitButtonId").disabled = true;

这个获得 25 票赞成的答案解释了世界各地许多糟糕的代码:/

答6:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

eric,当用户输入文本然后删除所有文本时,您的代码似乎对我不起作用。如果有人遇到同样的问题,我创建了另一个版本。来吧,伙计们:

$('input[type="submit"]').attr('disabled','disabled');
$('input[type="text"]').keyup(function(){
    
    
    if($('input[type="text"]').val() == ""){
    
    
        $('input[type="submit"]').attr('disabled','disabled');
    }
    else{
    
    
        $('input[type="submit"]').removeAttr('disabled');
    }
})

答7:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

它将像这样工作:

$('input[type="email"]').keyup(function() {
    
    
    if ($(this).val() != '') {
    
    
        $(':button[type="submit"]').prop('disabled', false);
    } else {
    
    
        $(':button[type="submit"]').prop('disabled', true);
    }
});

确保您的 HTML 中有一个“禁用”属性

答8:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

你也可以使用这样的东西:

$(document).ready(function() {
    
    
    $('input[type="submit"]').attr('disabled', true);
    $('input[type="text"]').on('keyup',function() {
    
    
        if($(this).val() != '') {
    
    
            $('input[type="submit"]').attr('disabled' , false);
        }else{
    
    
            $('input[type="submit"]').attr('disabled' , true);
        }
    });
});

这是Live example

答9:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

对于表单登录:


    
    
    


Javascript:

$(document).ready(function() {
    
        
    $('#send').prop('disabled', true);

    $('#email, #password').keyup(function(){
    
    

        if ($('#password').val() != '' && $('#email').val() != '')
        {
    
    
            $('#send').prop('disabled', false);
        }
        else
        {
    
    
            $('#send').prop('disabled', true);
        }
    });
});

答10:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

这是文件输入字段的解决方案。

要在未选择文件时禁用文件字段的提交按钮,然后在用户选择要上传的文件后启用:

$(document).ready(function(){
    
    
    $("#submitButtonId").attr("disabled", "disabled");
    $("#fileFieldId").change(function(){
    
    
        $("#submitButtonId").removeAttr("disabled");
    });
});

html:

<%= form_tag your_method_path, :multipart => true do %><%= file_field_tag :file, :accept => "text/csv", :id => "fileFieldId" %><%= submit_tag "Upload", :id => "submitButtonId" %><% end %>

答11:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

我们可以简单地拥有 if & else .if 假设您的输入为空,我们可以拥有

if($(#name).val() != '') {
    
    
   $('input[type="submit"]').attr('disabled' , false);
}

否则我们可以将 false 更改为 true

原文链接:https://www.huntsbot.com/qa/LPlo/jquery-disable-enable-submit-button?lang=zh_CN&from=csdn

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

猜你喜欢

转载自blog.csdn.net/kalman2019/article/details/128732219