jQuery .prop("disabled", false)无法启用输入框

22

在页面加载后,我遇到了重新启用已禁用输入的问题。

我使用两个输入框来接受两个日期,但我希望只有当第一个输入框有值时,才启用第二个输入框。

<div id="date1" data-role="fieldcontain">
    <label for="date1-start" id="date1-startlbl">Start Date</label>
    <input name="date1-start" id="date1-start" type="date" data-role="datebox"data-options='{"mode": "calbox", "overrideDateFormat": "%Y-%m-%d", "beforeToday": true}' data-theme="a" onchange="showdate()"/>
    <label for="date1-end" id="date1-endlbl">End Date</label>   
    <input name="date1-end" id="date1-end" type="date" data-role="datebox" data-options='{"mode": "calbox", "overrideDateFormat": "%Y-%m-%d", "beforeToday": true}' data-theme="a" onchange="datechart()"/>
</div>

第二个输入框在页面加载时已成功禁用。

$("#date1-end").prop("disabled", true);

第一个日期具有一个 onchange 事件,该事件调用以下函数:

function showdate(){
    if ($("#date1-start").val() != null){
        if ($("#date1-end").val() != ""){
            datechart();
        }
        else{
            $("#date1-end").prop("disabled", false);
            $("#date1-end").trigger('change');
        }
    }
}

当调用函数并达到prop("disabled", false)时,可以正常运行而不出现任何错误,但输入仍然无法使用。我正在使用的trigger('change')是尝试刷新元素,但即使没有它,问题仍然存在。

我尝试了不同版本的Jquery中的不同变体.attr,但是我仍然遇到了同样的问题。

我正在使用Jquery 1.9.1、Jquery-mobile 1.3.1和PhoneGap 2.7.0


4个回答

19

我之前遇到过同样的问题:

$("#date1-end").prop("disabled", null);

@Gautam3164的答案也很好。


太不直观了!!不过这个方法可行 - 谢谢! - Force Hero

14

试着使用removeAttr,例如:

$("#date1-end").removeAttr("disabled");

你也可以尝试使用像 prop 这样的方法

$("#date1-end").prop("disabled",false);

抱歉,我应该在使用.attr时进行详细说明,我也尝试过这种方法,但仍然遇到了相同的问题。 - RichardMc
1
那是我最初使用的,但我遇到了同样的问题。我已经读到需要在启用元素后刷新它。这是真的吗? - RichardMc

9

这个很好用。应该先看一下Jquery移动文档,而不是只看Jquery。谢谢。 - RichardMc
1
你的两个函数之间有什么区别? - Jeff Puckett
@JeffPuckettII,有一个错别字,我已经编辑了第二个函数为“启用”。 - hargobind

-4

2
滚动页面到您提供链接的下方,您将看到prop也用于设置值。 - loshad vtapkah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接