MVC2 - Попытка вытащить значение текстового поля в Javascript - PullRequest
1 голос
/ 11 августа 2011

Я пытаюсь выполнить проверку номера телефона в реальном времени с помощью JavaScript. Мне не нужна помощь в валидации; Мне просто нужна помощь в извлечении значения из текстового поля в переменную Javascript.

Однако при загрузке страницы появляется сообщение об ошибке «Имя txtPhone не существует в текущем контексте».

Вот где я объявляю текстовое поле в MVC2:

<div class="editor-field">
    <%: Html.TextBoxFor(model => model.phone, new { id = "txtPhone", onblur = "checkPhoneNumber();" })%>
    <%: Html.ValidationMessageFor(model => model.phone) %>
</div>

На той же странице у меня есть этот javascript:

function checkPhoneNumber() {
    var phone = $("#<%= txtPhone.ClientID %>").value;
}

Если я закомментирую ссылку txtPhone в Javascript, страница загрузится, и я увижу, что идентификатор правильно назначен для текстового поля следующим образом (из View Source):

<div class="editor-field">
    <input id="txtPhone" name="phone" onblur="checkPhoneNumber();" type="text" value="" />

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Используя прямой Javascript, вы можете получить ссылку на TextBox с помощью

document.getElementById('myText')

но похоже, что вы используете фреймворк (возможно, jQuery)? Если вы используете jQuery, я считаю, что синтаксис

$("#txtPhone")

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

1 голос
/ 11 августа 2011

Вы пытаетесь работать с серверными серверными элементами управления ASP.Net, которые MVC не использует.
Вам нужно только ClientID, поскольку серверные серверные элементы управления ASP.Net генерируют уникальные идентификаторы в сгенерированном HTML.

ASP.Net MVC не создает никаких серверных элементов управления;TextBoxFor всегда будет использовать идентификатор, который вы предоставляете как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...