2017-05-16 6 views
0

Je ne suis pas certaine version de Kendo nous utilisons, j'ai 2 fichiers:Comment désactiver/fermer par programmation un DropDownList du Javascript sur tous les navigateurs?

  • kendo.all.min.js - Kendo UI v2014.2.903
  • kendo.web.min.js - Kendo UI v2015.1.429

J'ai un formulaire avec une logique métier complexe qui dicte l'état activé/désactivé ainsi que les valeurs par défaut pour une variété de listes déroulantes sur ma page Web. J'ai un problème avec une zone de texte qui est censée désactiver une liste déroulante en fonction de sa valeur. Les contrôles sont définis comme ceci:

@(Html.Kendo().TextBoxFor(m => m.SomeTextboxValue).HtmlAttributes(new { id = "txtSomeField", onfocus = "FocusC0500()", onblur = "BlurC0500(false);FinalizeColor(this);" })) 

@(Html.Kendo().DropDownListFor(m => m.SomeDropdownValue).HtmlAttributes(new { id = "cmbSomeField", onchange = "OnChangeC0600(this, false, false);FinalizeColor(this);"}).BindTo(ViewBag.YesNoDash).OptionLabel(" ")) 

La fonction BlurC0500 sur l'événement onblur de la zone de texte est le problème. Sur la base de la valeur saisie, la JS suivant est exécuté:

// the variable cmb refers to cmbSomeField, the dropdown list defined above 
if ($("#cmbSomeControl").val() == "" || $("#cmbSomeControl").val() == '0') 
{ 
    cmb.select(0); 
    cmb.readonly(true); 
    cmb.close(); 
    SetTabIndexVals("cmbSomeField", "DROPDOWN", -1); 
    cmb.wrapper.find('.k-input').css('background', '#DDDDDD'); 
} 
else if (val == "" && $("#cmbSomeControl").val() == '1') 
{ 
    cmb.select(0); 
    cmb.readonly(false); 
    SetTabIndexVals("cmbSomeField", "DROPDOWN", 1); 
    cmb.wrapper.find('.k-input').css('background', '#FFA500'); 
} 
else 
{ 
    cmb.select(1); 
    cmb.readonly(true); 
    cmb.close(); 
    SetTabIndexVals("cmbSomeField", "DROPDOWN", -1); 
    cmb.wrapper.find('.k-input').css('background', '#DDDDDD'); 
} 

Trois d'entre nous dans mon bureau obtiennent des résultats différents en fonction du navigateur utilisé et la version spécifique du navigateur. Par exemple, cela fonctionne sur mon ordinateur (Chrome v58) mais ne fonctionne pas sur la machine de mon collègue (Chrome v50).

Sans cmb.close(); il semble fonctionner correctement dans Chrome et FireFox, mais pas IE - selon la version, encore une fois.

Alors, comment puis-je corriger cela?

Répondre

0

J'utilise la méthode d'activation intégrée pour désactiver et activer la liste déroulante kendo au lieu de définir readonly et close. Cela a fonctionné sur plusieurs navigateurs (IE, Chrome, Firefox).

cmb.enable(true/false); 
+1

@Daniel a édité ma réponse. – oopsdazie