我有两个利用自动完成功能的TextBoxFor字段。在用选定的自动完成值或手动值填充它们之后,其他JavaScript函数在引用ID.val()时将为空白。为了获得这些值需要添加/更改什么?预先感谢!
编辑: 在发送到View之前,在Controller中预填充字段可以使函数调用检索正确的,预填充的值。似乎只有在用户尝试编辑字段和/或使用自动完成功能时,字段值才被识别。
EDIT2:我尝试将函数绑定到document.ready,然后单击,然后单击document.on,但没有人在文本框ID中找到值。
剃刀:
<div class="row">
<div class="col-lg-12">
@Html.LabelFor(m => m.AddedWorkmate, "Workmate To Add", new { @class = "control-label" })
@Html.TextBoxFor(m => m.AddedWorkmate, new { data_autocomplete_url = Url.Action("GetWorkmates"), @class = "form-control" })
</div>
</div>
<div class="row">
<div class="col-lg-4">
<button type="button" id="bUser" name="bUserButton" class="btn btn-primary btn-sm">Add Workmate Recipient</button>
</div>
</div>
脚本:
function ExampleFunction() {
var $addedW = $("#AddedWorkmate");//This should work, but apparently doesn't
var textTest = $addedW.text(),// = ""
valueTest = $addedW.val();// = ""
//Stuff to do
}
答案 0 :(得分:1)
我认为,如果您输入自动完成功能并且仍然具有焦点,那么输入将不会检测到更改。您是否尝试过退出文本框并打电话给ExampleFunction
?
您还可以在此文本框的ExampleFunction
事件上绑定input
。input
在用户键入或粘贴时触发,因此它也可以与自动完成功能一起使用。
(function(){
$('#AddedWorkmate').on("input", ExampleFunction);
}
)();
function ExampleFunction() {
var text = $(this).val();
}
编辑:
尝试以下步骤:
m => m.AddedWorkmate
文本框中输入或粘贴一些文本,例如test
。$("#AddedWorkmate).val()
。"test"
的答复。input
上绑定事件(function(){
$('#AddedWorkmate').on("input", function(){console.log('test')});
}
)();
$(this).val()
内,我看不到任何其他可能性。如果它不是未定义的,但值仍然为空,则说明您在问题范围之外做错了事。答案 1 :(得分:0)
将所需的ID添加到文本框中,以便可以从jQuery引用它。
@Html.TextBoxFor(m => m.AddedWorkmate, new { data_autocomplete_url = Url.Action("GetWorkmates"), @class = "form-control", id="AddedWorkmate" })
答案 2 :(得分:0)
所有这些背后都有一个草率的错误:该字段在网页的前面被声明为@HiddenFor。看到输入在源代码中“隐藏”后,该行被删除,一切正常。