web-dev-qa-db-fra.com

jQuery .prop ("désactivé", faux) n'active pas une entrée

Je rencontre un problème pour réactiver une entrée une fois qu'elle a été désactivée lors du chargement de la page.

J'utilise deux entrées pour accepter deux dates, mais je veux que la deuxième entrée ne soit activée que lorsque la première a une valeur.

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

La deuxième entrée est désactivée avec succès lors du chargement de la page avec.

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

La première date a un événement onchange qui appelle la fonction suivante

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

La fonction est appelée et prop("disabled", false) lorsqu'elle est atteinte se déclenche sans erreur, mais l'entrée reste désactivée. Le déclencheur ("changement") que j'utilise est une tentative de rafraîchissement de l'élément mais le même problème existe sans lui.

J'ai essayé différentes variantes de .attr À partir d'une ancienne version de Jquery mais j'ai également le même problème.

J'utilise Jquery 1.9.1, Jquery-mobile 1.3.1 et PhoneGap 2.7.0

18
RichardMc

Exemple de travail: http://jsfiddle.net/d9vzs/

Ce n'est pas ainsi que vous activez la désactivation des éléments d'entrée jQUery Mobile.

Cela peut être fait avec ces fonctions:

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


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

Documentation officielle: http://api.jquerymobile.com/textinput/#method-disable

7
Gajotres

J'ai eu le même problème il y a quelque temps:

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

La réponse de @ Gautam3164 est également bonne.

13
ElmoVanKielmo

Essayez avec removeAttr comme

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

Vous pouvez également essayer avec prop comme

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