JavaScript в ASP.NET UserControl не загружает HTML в свою переменную

Я создал UserControl, который хочу использовать на нескольких страницах. Этот элемент управления содержит классический javascript, но по какой-то причине он не загружает элемент в переменную. Идентификаторы клиентов выглядят нормально.

Это кнопка, активирующая 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]".

Итак, независимо от того, что находится в этом текстовом поле, эта функция всегда ложна. Я также проверил все идентификаторы на конечной странице клиента, и на них нет дубликатов. Вы можете сказать, почему это так? Спасибо.

попробуйте установить тип ввода, чтобы кнопка не отправляла. Поскольку приложение submit в веб-формах будет выполнять обратную передачу, это может быть проблемой вашей проблемы.

SehaxX 26.07.2018 10:16

Проблема в том, что в моем файле .aspx я использую такую ​​кнопку: <asp: Button ID = "btn_NewContact" runat = "server" Text = "Potvrdit" CssClass = "MyButton" style = "color: white;" OnClientClick = "javascript: return CheckContactName ();" OnClick = "btn_NewContact_Click" /> OnClientClick возвращает false, он не должен выполнять обратную передачу

Somachr 26.07.2018 10:21

хорошо ... вы включили viewstate на контроле. page или global в проекте.

SehaxX 26.07.2018 10:25

нет, я должен это сделать?

Somachr 26.07.2018 10:29

да попробуйте. в вашем элементе управления или непосредственно в текстовом поле, если это asp: textbox

SehaxX 26.07.2018 10:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
87
2

Ответы 2

Я полагаю, вы правильно установите значение ввода в коде?

В любом случае вы можете попробовать использовать 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;
}

Нет, я не устанавливаю значение в коде позади и "|" просто сначала попробует первое выражение, если оно ложно, другое ему будет наплевать. Я изучу querySelector.

Somachr 26.07.2018 10:16

Это работает в Javascript? Насколько я знаю, в C# он работает, но никогда не тестировал его на Javascript.

Emiliano Montesdeoca 26.07.2018 10:23

Тем не менее, значение в любом случае не определено

Somachr 26.07.2018 10:26

Изменен название на cname.

Кажется, что когда вы используете элемент управления на странице, которая уже содержит некоторую функцию JavaScript, и эта функция объявляет переменную с тем же именем, что и имя в usercontrol - это происходит.

Но как этого избежать?

Somachr 26.07.2018 11:19

Другие вопросы по теме