2014-10-31 2 views
0

Это моя первая попытка включить javascript в мой webapp, отличный от другого, с помощью другого консервированного скрипта.Текстовое поле Невозможно получить значение свойства 'значение': объект имеет значение null или undefined

У меня есть веб-форма в ASP.net VB. В форме у меня есть флажок, и когда этот флажок установлен, я хочу, чтобы он запрашивал пользователя для qty, я тогда хочу, чтобы он вычитал это количество из количества в другом текстовом поле, заполненном в запросе на загрузку формы. Мой taqty не получает количество от txtQtyAcc, с ошибкой Невозможно получить значение свойства 'value': объект имеет значение null или undefined. Я также вижу ошибку для вычисленной величины переменной haqty, которая не определена. Я не уверен, что мне не хватает. Я проверил все подобные вопросы, не найдя решения.

var taqty = document.getElementById('<%= txtQtyAcc.ClientId %>').value; 
    var rejqty = prompt("Enter Reject Qty", "0"); 
    var haqty = taqty.value - rejqty; 

    function rQty() { 

     if (rejqty != null) { 
      document.getElementById('<%= txtQtyRej.ClientID %>') = rejqty.value.toString; 
      taqty.value = haqty.value.toString 
     } 
    } 

Я вызываю скрипт из кода позади для checkbox.checkedchanged события.

ScriptManager.RegisterClientScriptBlock(Me.Page, GetType(String), "rQtyFunction", "rQty();", True) 

ответ

0

Использовать следующее.

ScriptManager.RegisterStartupScript(Me.Page, GetType(String), "rQtyFunction", "rQty();", True).

примечание я использовал RegisterStartupScript вместо RegisterClientScriptBlock. Если вы используете прежний, то есть RegisterStartupScript, он поместит весь скрипт в конец тега </form>, что означает, что к этому времени будут добавлены все входные элементы DOM и будут доступны, вы не получите таких ошибок, которые вы получили до сих пор.

Это позволяет сценарию вызывать или ссылаться на элементы страницы без возможности их нахождения в DOM страницы.

В то время как RegisterClientScriptBlock добавляет script к при запуске для <form>, так что справедливо возможность ошибки.

Поскольку это прямой скрипт (а не функция, которая может быть вызвана, она будет немедленно выполнена браузером, но браузер не находит метку в DOM страницы на данном этапе и, следовательно, вы должны получить . «объект не найден» ошибка

для получения дополнительной информации об использовании этого смотрите по этой ссылке - Difference between RegisterStartupScript and RegisterClientScriptBlock?

+0

так RegisterStartupScript же устранить исходную ошибку, к сожалению теперь это вызывает приглашение для работы в качестве страницы. Кроме того, когда я проверяю флажок, он запускается, но после отправки количества checkb ox не отмечен, а Qty Accepted и Qty Rejected не заполнены. Любые мысли о том, почему? –

+0

@KevinNelson, я попробовал пример, я сохранил 'RegisterStartupScript' при событии изменения флажка, и если произойдет какой-либо другой postback, он не покажет' javascript'. В вашем случае, возможно, у вас отсутствует условие 'checkbox.checked', также убедитесь, что если происходит другой 1postback', он все еще имеет' js', проверяя 'view-source'. Если это так, что вы можете отменить регистрацию скрипта - http://aspforums.net/Threads/101797/Solved-Remove-Unregister-ClientScriptRegisterClientScriptBlock-in-ASPNet/ –

+0

Я проверяю условие checkbox.checked в инструкции if из CheckedChanged мероприятие. По-видимому, у меня есть связанная проблема с просмотром страницы, когда установлен флажок. Флажок всегда возвращает false. Возможно, мне нужно отступить и вернуться к этой странице. –

Смежные вопросы

 Смежные вопросы