我创建了希望在多个页面上使用的 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是未定义的。该名变量本身就是“[对象HTMLInputElement]”。所以不管那个文本框中是什么,这个函数总是假的。我还检查了最终客户页面中的所有 ID,没有重复。你能说出这是为什么吗?谢谢。
2 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
将名称更改为cname。
似乎当您在已经包含一些 JavaScript 函数的页面上使用控件并且该函数声明与 usercontrol 中的变量名称相同的变量时 - 这就会发生。
HUX布斯
TA贡献1876条经验 获得超6个赞
我假设您在后面的代码中设置了输入值,对吗?
无论如何,您可以尝试使用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;
}
- 2 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消