Javascript 在JQuery自动完成后获取ID的值

Javascript 在JQuery自动完成后获取ID的值,javascript,jquery,asp.net,asp.net-mvc,razor,Javascript,Jquery,Asp.net,Asp.net Mvc,Razor,我有两个文本框用于使用自动完成的字段。在由所选的自动完成值或手动值填充后,其他javascript函数在引用ID.val()时为空。需要添加/更改哪些内容才能获得这些值?提前谢谢 编辑: 在发送到视图之前预先填充控制器中的字段允许函数调用检索正确的预先填充值。似乎只有当用户尝试编辑字段和/或使用自动完成时,才无法识别字段值 (function(){ $('#AddedWorkmate').on("input", ExampleFunction); } )(); functio

我有两个文本框用于使用自动完成的字段。在由所选的自动完成值或手动值填充后,其他javascript函数在引用ID.val()时为空。需要添加/更改哪些内容才能获得这些值?提前谢谢

编辑: 在发送到视图之前预先填充控制器中的字段允许函数调用检索正确的预先填充值。似乎只有当用户尝试编辑字段和/或使用自动完成时,才无法识别字段值

(function(){
      $('#AddedWorkmate').on("input", ExampleFunction);
   }
)();

function ExampleFunction() {
    var text = $(this).val();
}
EDIT2:我已尝试将函数绑定到document.ready,然后是on click和document.on click,但都没有在文本框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>

将您想要的id添加到文本框中,以便可以从jQuery引用它

@Html.TextBoxFor(m => m.AddedWorkmate, new { data_autocomplete_url = Url.Action("GetWorkmates"), @class = "form-control", id="AddedWorkmate" })

我认为如果你输入自动完成,并且你仍然有焦点,那么输入将不会检测到变化。您是否尝试退出文本框并在软件后调用
ExampleFunction

您还可以在此文本框的
input
事件上绑定
ExampleFunction
input
在用户键入或粘贴时被触发,因此它也应该与自动完成一起工作

(function(){
      $('#AddedWorkmate').on("input", ExampleFunction);
   }
)();

function ExampleFunction() {
    var text = $(this).val();
}
编辑:

请尝试以下步骤:

  • 留下自动完成。在
    m=>m.AddedWorkmate
    文本框中键入或粘贴一些文本,例如
    test
  • 打开控制台
  • 键入并调用
    $(“#AddedWorkmate).val()
  • 您应该得到
    “test”
    的响应
  • 如果您有这个,那么DOM中就没有bug
  • 然后尝试在
    input
    上绑定一个事件,如下所示
  • 如果这在输入时登录到控制台-是的,那么您有一个正确的绑定
  • 然后集中精力获取值。此时,它必须位于
    $(this).val()
    的内部,我看不出任何其他可能性。如果它未定义且值仍然为空,则您在问题范围之外做了错误的事情
  • 如果您成功地获得了该值,那么将其与自动完成连接起来-它应该可以工作

  • 所有这一切背后都有一个草率的错误:该字段在网页的前面被声明为@HiddenFor。在看到源代码中的输入“隐藏”后,该行被删除,一切正常。

    感谢您的建议,但这似乎不起作用。添加的id与示例一样,而.val()仍然显示为“谢谢你的回答!在按下启动函数的按钮之前,我尝试在文本框外单击,但值仍然为“”。我将尝试将函数绑定到文本框的输入。我尝试将示例代码放入,但输入代码没有被触发。ExampleFunction仅在按下按钮时启动。是否确定此TextBoxFor的id将呈现给AddedWorkmate?请验证是否可以将$('#AddedWorkmate').val()与手动键入的文本一起使用。我没有完整的上下文,因此可能遗漏了某些内容。它似乎是实际的ID。查看源代码时,它的ID=“AddedWorkmate”。我认为这与您最初提出的关于自动完成的重点的建议是一致的,但我不确定。我当时不知道。我想你在这个范围之外的某个地方有一个bug,我说不出来。此时,您应该能够调用$('#AddedWorkmate').val(),并在单击按钮之前获取键入的内容。尝试验证您没有具有相同id的任何其他元素,并且输入事件绑定被正确调用。
    (function(){
          $('#AddedWorkmate').on("input", function(){console.log('test')});
       }
    )();