我已经创建了要在多个页面上使用的UserControl。此控件包含经典的javascript,但由于某些原因,它不会将元素加载到变量中。客户端ID看起来不错。
这是激活javascript:的按钮
<input type="submit" name="ctl00$ContentPlaceHolder1$ContactList$btn_NewContact" value="Potvrdit" onclick="javascript:return CheckContactName();" id="ContentPlaceHolder1_ContactList_btn_NewContact" class="MyButton" style="color:white;" />
这是文本框:
<input name="ctl00$ContentPlaceHolder1$ContactList$con_fullname" type="text" id="ContentPlaceHolder1_ContactList_con_fullname" class="MyTextBox" />
这是Javascript函数:
function CheckContactName() {
name = document.getElementById("ContentPlaceHolder1_ContactList_con_fullname");
if (name.value == '' | name.value == null) {
return false;
}
UploadContact();
return true;
}
现在,当我在控制台中调试它时,name.value是未定义的。名称变量本身只是"[object HTMLInputElement]">。
因此,无论该文本框中有什么内容,该函数始终为false。我还检查了最终客户端页面中的所有ID,并没有重复。你能说出这是为什么吗?谢谢
我建议您在代码后面设置输入值,对吗?
无论如何,您可能会尝试使用document.querySelector
,但您的逻辑运算符似乎是错误的,您使用的是|
而不是||
。
function CheckContactName() {
let name = document.querySelector(
'#ContentPlaceHolder1_ContactList_con_fullname'
);
if ((name.value == '') || (name.value == null) || (name == undefined)) {
return false;
}
UploadContact();
return true;
}
将名称更改为cname。
似乎当您在已经包含某些JavaScript函数的页面上使用控件,并且该函数声明的变量与usercontrol中的变量同名时,就会发生这种情况。