Кажется, я не могу заставить это стрелять.. или действительно изменить текст меток. Может ли кто-нибудь предложить какие-либо рекомендации? Предупреждение существует только потому, что я тестировал, действительно ли это событие на самом деле стреляло. Это, похоже, не так. Единственная другая информация заключается в том, что это форма внутри fancybox iframe. Я даже не уверен, что у меня есть код для изменения текста, но это вторая проблема. Сейчас я не могу запустить событие.
Код
<asp:DropDownList ID="ddlPUom" runat="server" CssClass="form-control input-sm"></asp:DropDownList>
<asp:Label ID="lblpuom" ccclass="col-xs-2 control-label" runat="server" Text=""></asp:Label>
<script type="text/javascript">
$('#ddlPUom').change(function () {
alert("did this fire?");
var lbltext = doc.getElementById("ddlPUom");
var lblPUOM = doc.getElementById("lblpuom");
lblPUOM.lbltext = lbltext.innerhtml;
});
</script>
Спасибо за все комментарии. Вы направили меня в правильном направлении. В конце я сменил метки на стандартный <label></label>
который работал с вышеуказанным кодом, и сделал функцию document.ready для обновления из выпадающих списков, которые заданы из кода, расположенного ниже.
Причина в том, что поскольку ddlPUom
является контролем на стороне сервера, идентификатор изменяется, когда он отображается в DOM. Информация о странице и информация управления добавляются и становятся чем-то вроде этого ctl00_Main_ddlPUom
использование
$('[id$=ddlPUom]').change(function() {//id which ends with the text 'ddlPUom'
или
$('[id*=ddlPUom]').change(function() {//id which contains the text 'ddlPUom'
Но здесь есть несколько других способов: qaru.site/questions/249939/...
Вы могли бы попробовать что-то вроде этого..
<script type="text/javascript">
$('#ddlPUom').change(function () {
alert("did this fire?");
var lbltext = doc.getElementById("<%=ddlPUom.ClientID%>");
var lblPUOM = doc.getElementById("<%=lblpuom.ClientID%>");
lblPUOM.lbltext = lbltext.innerhtml;
});
</script>
Возможно, вам потребуется добавить часть ClientID в раскрывающийся список.
ClientID
заключается в том, что вы не можете написать этот код во внешних файлах сценариев.
$('#ddlPUom').change
не работает.
Ваш код выглядит достаточно корректно, чтобы ваше предупреждение выполнялось. Возможно, идентификатор вашего контроля на самом деле не установлен на ddlPUom. Иногда это чувствительно к регистру. См. Этот пост о чувствительности к регистру. Селекторы класса JQuery, такие как $ (. SomeClass), чувствительны к регистру?
Также проверьте консоль ошибок в своем браузере, чтобы узнать, были ли какие-либо ошибки JavaScript. Firefox: Инструменты> Веб-разработчик> Консоль ошибок Chrome: щелкните правой кнопкой мыши на странице и выберите элемент проверки, нажмите "Консоль" в появившемся окне.
Теперь, когда вы добавили html - код, приведенный ниже, должен активировать событие.
$(document).ready(function(){
$('#<%=ddlPUom.ClientID%>').change(function () {
alert("did this fire?");
}
});
document
наvar doc =
?