我正在尝试使用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="" />
答案 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")
无论哪种方式,一旦你得到对文本框的引用,设置值应该按照你尝试的方式工作。