Функция не определена с использованием JavaScript

0

На моей странице ASP.NET используется следующий код:

<asp:ScriptManager  ID="ScriptManager1" runat="server"></asp:ScriptManager>
<script type="text/javascript" language="javascript">
        function ValMail() {
        var txt = document.getElementById("<%= Email.ClientID%>");
        var Resp = <%IsValidEmail(Email.Text)%>;
        if (Resp != false)
            txt.nodeValue = "";
            txt.focus();
            };
    </script>
    <asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">E-mail:</asp:Label>
    <asp:TextBox ID="Email" runat="server" TabIndex="4" CssClass="textEntry" CausesValidation="True" ></asp:TextBox>
<asp:Button ID="TestButton" runat="server" OnClientClick="ValMail()" />

Моя проблема в том, что когда я нажимаю кнопку, приходит выполнение команды OnClientClick="ValMail()"
Выполняет выполнение программы и javascript runtime error: ValMail() is undefined мне ошибку javascript runtime error: ValMail() is undefined
Но даже сеять я нажимаю " Ignore а код переходит в скрипт, выполняет только строку var Resp = <%IsValidEmail(Email.Text)%>; и ничего из остальной части кода в javascript
Im совершенно незнакомы с javascript кодированием и большинством с заброшенными ошибками. Кто-то помогает мне в этом?

  • 1
    Вы должны отлаживать, просматривая исходный код, а не генерирующий код. Какой вывод этого кода?
  • 0
    Вывод True или False, а затем я пытаюсь обработать это внутри скрипта. Я установил задержку в коде, а затем пытался идти шаг за шагом, и поэтому я вижу, что ничего не выполняется из других строк кода Java
Показать ещё 6 комментариев

1 ответ

1
Лучший ответ

Я не могу объяснить, что ошибка "ValMail() не определена". Однако, если вы используете ваш браузер "View Page Source", я думаю, вы обнаружите, что эта строка:

var Resp = <%IsValidEmail(Email.Text)%>;

... отправляется в браузер следующим образом:

var Resp = True;

или:

var Resp = False;

Любой из них является синтаксической ошибкой в JavaScript, потому что JS чувствителен к регистру, и вам нужно ввести строчные буквы t или f в логическом значении true и false. Поэтому либо измените этот код ASP, чтобы поместить true или false во все строчные буквы или добавить кавычки, чтобы JS рассматривал его как строку, а затем тестировал как строку с соответствующим прописным слоем F:

var Resp = "<%IsValidEmail(Email.Text)%>";
if (Resp != "False")

Что, учитывая, что Resp используется только в одном месте после его объявления, вы можете уменьшить до:

if ("<%IsValidEmail(Email.Text)%>" != "False") {

Также я думаю, что вы хотите txt.value, а не txt.nodeValue.

Наконец, судя по отступов, я подозреваю, что вы хотите обе линии под if принадлежат к, if, в этом случае они должны содержаться в блоке, обозначенном { и } - вы в настоящее время не имеют никакого отверстия { что означает только линию сразу после того, как if принадлежит ему.

Объединив все это:

function ValMail() {
    var txt = document.getElementById("<%= Email.ClientID%>");
    if ("<%IsValidEmail(Email.Text)%>" != "False") {
        txt.value = "";
        txt.focus();
    }
}
  • 0
    Я меняю это сейчас
  • 0
    ДА ДА ДА ДА, теперь код работает идеально, а строки выполняются просто отлично. НО, если я не хочу использовать кнопку, как я могу вызвать функцию?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню