jQuery自动完成后获取ID的值

时间:2019-02-27 21:58:41

标签: javascript jquery asp.net asp.net-mvc razor

我有两个利用自动完成功能的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
}

3 个答案:

答案 0 :(得分:1)

我认为,如果您输入自动完成功能并且仍然具有焦点,那么输入将不会检测到更改。您是否尝试过退出文本框并打电话给ExampleFunction

您还可以在此文本框的ExampleFunction事件上绑定inputinput在用户键入或粘贴时触发,因此它也可以与自动完成功能一起使用。

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

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

编辑:

尝试以下步骤:

  1. 保留自动补全功能。在m => m.AddedWorkmate文本框中输入或粘贴一些文本,例如test
  2. 打开控制台。
  3. 输入并致电$("#AddedWorkmate).val()
  4. 您应该得到"test"的答复。
  5. 如果有这个-DOM中没有bug。
  6. 然后尝试像这样在input上绑定事件
(function(){
      $('#AddedWorkmate').on("input", function(){console.log('test')});
   }
)();
  1. 如果这在输入时登录到控制台-是的,您具有适当的绑定。
  2. 然后专注于获取价值。此时,它必须位于$(this).val()内,我看不到任何其他可能性。如果它不是未定义的,但值仍然为空,则说明您在问题范围之外做错了事。
  3. 如果您成功获取该值,则将其与自动完成功能结合使用-应该可以使用。

答案 1 :(得分:0)

将所需的ID添加到文本框中,以便可以从jQuery引用它。

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

答案 2 :(得分:0)

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