2013-06-20 3 views
0

У меня есть вызов в моем коде, который выглядит как:Отключение кнопки Javascript и C#

bool isQtyValid = true; 
bool disabled = false; 
foreach(parameters) 
{ 
    //setting isQtyValid 
    if (!isQtyValid) 
     disabled = true; 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "function", string.Format("SetButtonStatus('{0}')", disabled.ToString().ToLower()), true); 
} 

тогда мой Javascript выглядит следующим образом:

function SetButtonStatus(disabled) { 
    var bb = document.getElementsByClassName('ButtonSubmit'); 
    for (var i = 0; i < bb.length; i++) { 
      bb[i].disabled = disabled; 
    } 
} 

По какой-то причине это будет работать только в одну сторону. Если он отключен = true, он не вернется к включению, и если он отключится = false, он не вернется к отключению. Я посмотрел на переменную, чтобы убедиться, что она настроена правильно, и она меняет значение с true на false и false на true, если это необходимо, но не изменяет отключенное состояние кнопки.

Не хватает ли каких-либо мелочей, которые вы видите?

Благодарим за помощь, которую вы можете мне дать.

+0

является '!' Опечатка нет на ваш реальный code? 'setButtonStatus (! isQtyValid)' –

+0

да, это было, я обновил более описательный взгляд на мой код –

+0

При каких условиях состояние может быть изменено? Если состояние изменено асинхронно (т. Е. Ajax), последующие вызовы для регистрации ваших сценариев запуска никогда не будут выполняться, потому что это происходит только при загрузке страницы, а не на частичных обратных передачах. – Stoop

ответ

1

Первое, что я обнаружить, что вы передаете логическое значение в виде строки

Попробуйте заменить

"SetButtonStatus('{0}')" // <-- SetButtonStatus('true') 

по

"SetButtonStatus({0})" // <-- SetButtonStatus(true) 
+0

ding ding ding, это решает проблему, спасибо за указание! –