猿问

ASP.NET UserControl javascript 未将 HTML 加载到其变量

我创建了希望在多个页面上使用的 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,没有重复。你能说出这是为什么吗?谢谢。


慕哥6287543
浏览 137回答 2
2回答

天涯尽头无女友

将名称更改为cname。似乎当您在已经包含一些 JavaScript 函数的页面上使用控件并且该函数声明与 usercontrol 中的变量名称相同的变量时 - 这就会发生。

HUX布斯

我假设您在后面的代码中设置了输入值,对吗?无论如何,您可以尝试使用document.querySelector,并且您的逻辑运算符似乎是错误的,您正在使用|而不是||。function CheckContactName() {&nbsp; &nbsp; let name = document.querySelector(&nbsp; &nbsp; &nbsp; &nbsp; '#ContentPlaceHolder1_ContactList_con_fullname'&nbsp; &nbsp; );&nbsp; &nbsp; if ((name.value == '') || (name.value == null) || (name == undefined)) {&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }&nbsp; &nbsp; UploadContact();&nbsp; &nbsp; return true;}
随时随地看视频慕课网APP
我要回答