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') 尝试刷新元素,但没有它也会存在同样的问题。

我尝试.attr了旧版本的 Jquery 的不同变体,但我也遇到了同样的问题。

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

4

4 回答 4

18

前段时间有同样的问题:

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

@ Gautam3164 的回答也不错。

于 2013-07-04T11:28:36.313 回答
13

试试removeAttr喜欢

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

你也可以试试proplike

$("#date1-end").prop("disabled",false);
于 2013-07-04T11:27:04.263 回答
9

工作示例:http: //jsfiddle.net/d9vzs/

这不是您启用禁用jQuery Mobile 输入元素的方式。

可以使用以下功能完成:

$( "input" ).textinput( "disable" );


$( "input" ).textinput( "enable" );

官方文档:http ://api.jquerymobile.com/textinput/#method-disable

于 2013-07-04T11:29:20.047 回答
-4

Prop 仅用于获取值和设置值。请参阅此http://api.jquery.com/prop/

$("#date1-end").prop("disabled", false);
于 2013-07-04T11:30:56.870 回答