На моей странице 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 кодированием и большинством с заброшенными ошибками. Кто-то помогает мне в этом?
Я не могу объяснить, что ошибка "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();
}
}