У меня есть страница регистрации ASP.NET, созданная в пользовательском элементе управления с физическим адресом и почтовым адресом, есть также флажок, если они одинаковы. Этот флажок вызывает функцию JavaScript, которая скрывает ненужные поля и останавливает их проверку. Это работало в тестировании.Javascript не найден в пользовательском контроле
Этот элемент управления был помещен на веб-сайт, а когда он запущен и щелчок отмечен, а исключение выбрано «Ошибка выполнения JavaScript:« updateValidator »не определено». Javascript на той же странице. Это происходит через разные пользовательские элементы управления с различным javascript.
веб-страницы ASP.NET
<asp:CheckBox ID="checkboxPostalPhysicalSame" TextAlign="Left" runat="server" Text="Postal same as physical address?" OnClick="updateValidator();"/>
<span id="spanPostalAddress">
<br />
<asp:Label ID="lblPostalAddress" runat="server" Text="Postal Address: " AssociatedControlID="txtPostalAddress"/>
<asp:TextBox ID="txtPostalAddress" runat="server" Wrap="true" />
<asp:RequiredFieldValidator ID="rfvPostalAddress" runat="server" ControlToValidate="txtPostalAddress" ErrorMessage="Address is required."
ToolTip="Address is required." ValidationGroup="vgRegistration" >* Required</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblPostalSuburb" runat="server" Text="Suburb: " AssociatedControlID="txtPostalSuburb"/>
<asp:TextBox ID="txtPostalSuburb" runat="server" Wrap="true" />
<asp:RequiredFieldValidator ID="rfvPostalSuburb" runat="server" ControlToValidate="txtPostalSuburb" ErrorMessage="Suburb is Required."
ToolTip="Suburb is required." ValidationGroup="vgRegistration" >* Required</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblPostalCity" runat="server" Text="City: " AssociatedControlID="txtPostalCity"/>
<asp:TextBox ID="txtPostalCity" runat="server" Wrap="true" />
<asp:RequiredFieldValidator ID="rfvPostalCity" runat="server" ControlToValidate="txtPostalCity" ErrorMessage="City is Required."
ToolTip="City is required." ValidationGroup="vgRegistration" >* Required</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblPostalPostCode" runat="server" Text="Postcode: " AssociatedControlID="txtPostalPostCode"/>
<asp:TextBox ID="txtPostalPostCode" runat="server" Wrap="true" TextMode="Number" />
<asp:RequiredFieldValidator ID="rfvPostalPostcode" runat="server" ControlToValidate="txtPostalPostCode" ErrorMessage="Postcode is Required."
ToolTip="Postcode is required." ValidationGroup="vgRegistration" >* Required</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revPostalPostCode" runat="server" ControlToValidate="txtPostalPostCode" ErrorMessage="Postcode is invalid"
ToolTip="Postcode is invalid." ValidationExpression="^([0-9]){4}?$" ValidationGroup="vgRegistration" >* Invalid Postcode</asp:RegularExpressionValidator>
</span>
JavaScript
<script type="text/javascript">
function updateValidator() {
var enableValidator = !event.srcElement.checked;
var rfvPostalAddress = document.getElementById('<%= rfvPostalAddress.ClientID %>');
var rfvPostalSuburb = document.getElementById('<%= rfvPostalSuburb.ClientID %>');
var rfvPostalCity = document.getElementById('<%= rfvPostalCity.ClientID %>');
var rfvPostalPostcode = document.getElementById('<%= rfvPostalPostcode.ClientID %>');
spanPostalAddress.hidden = !enableValidator;
ValidatorEnable(rfvPostalAddress, enableValidator);
ValidatorEnable(rfvPostalSuburb, enableValidator);
ValidatorEnable(rfvPostalCity, enableValidator);
ValidatorEnable(rfvPostalPostcode, enableValidator);
}
</script>
Это View Source формируют страницу при работе в браузере. Я вырезал несколько бит, чтобы сделать его лучше, но ничего не переделал.
Я не могу взять его из пользовательского элемента управления.
Спасибо за любую помощь.
Из того, что я могу сказать, происходит то, что полностью игнорируется, поэтому javascript, хотя и технически существует, рассматривается как JavaScript.
У меня возникла мысль о перемещении JavaScript и внешнего файла, но тогда ClientID не скомпилируется, поэтому я не могу ссылаться на Validators, чтобы отключить их.
Вы уверены, что скрипт загружается на этих страницах, и что тэгом с перед любым пользовательским элементом управления? –
Я только что загрузил изображение источника страницы. – Seige
Прежде всего, я рекомендую привязать обработчик к событию onchange при работе с флажками или переключателями. Теперь попробуйте определить функцию updateValidator следующим образом: window.updateValidator = function() {your code ...} и посмотреть, все еще не определено при возникновении события –