MVC2 - 尝试将文本框的值拉入Javascript

时间:2011-08-10 21:20:06

标签: javascript asp.net-mvc-2

我正在尝试使用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;
}

如果我在Javascript中注释掉txtPhone引用,页面将加载,我可以看到ID已正确分配给文本框,如下所示(来自View Source):

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

2 个答案:

答案 0 :(得分:1)

您正在尝试使用MVC不使用的ASP.Net服务器控件 您只需要ClientID,因为ASP.Net服务器端控件在其生成的HTML中发出唯一ID。

ASP.Net MVC不会创建任何服务器端控件; TextBoxFor将使用您原样提供的ID。

答案 1 :(得分:1)

使用直接Javascript,您可以使用

获取对TextBox的引用

document.getElementById('myText')

但看起来你正在使用一个框架(也许是jQuery)?如果您使用的是jQuery,我相信语法是

$("#txtPhone")

无论哪种方式,一旦你得到对文本框的引用,设置值应该按照你尝试的方式工作。