从focusout后的文本输入中获取值&显示来自该值的数据
本文关键字:显示 数据 获取 focusout 文本 输入 | 更新日期: 2023-09-27 18:13:26
我有三个输入文本:UserID, UserName和email;
<input type="text" name="UserID" class="form-control" id="input-loader" placeholder="User ID">
<input type="text" name="UserName" class="form-control" id="user-show" placeholder="User Name">
<input type="text" name="Email" class="form-control" id="email-show" placeholder="Email">
in My database:
UserID(string) | UserName(string) | email(string)
satriodwiwith | satriowihuripto | sdwihuripto@lala.com
- 文本框UserId显示,但文本框UserName和email隐藏
- 当我在userID和focusOut中键入satriodwiwith(单击选项卡或单击文本框外)时,显示的文本框用户名和电子邮件及其值来自数据库。
我为focusout设置了这样的jquery:
$(function () {
$body = $("body"),
$("#user-show").hide(),
$("#email-show").hide(),
$(function () {
$("#input-loader").focusout(function () {
var UserIDc = document.getElementById("#input-loader");
$(function () {
$.get("/mockjax", function () {
$("#user-show").show(),
$("#email-show").show(),
});
});
});
});
$(document).on({
ajaxStart: function () { $body.addClass("loading"); },
ajaxStop: function () { $body.removeClass("loading"); }
});});
我必须做什么?卡住时间太长
您需要创建一个控制器动作方法,返回包含UserName和Email的json,如下所示:
[HttpGet]
public ActionResult GetUserData(string userID)
{
string userName = ...; // get user name from database here
string email = ""; // get email from database here
return Json(new { ID = userID, UserName = userName, Email = email }, JsonRequestBehavior.AllowGet);
}
然后将脚本部分更改为:
$(function () {
$body = $("body");
$("#user-show").hide();
$("#email-show").hide();
$(function () {
$("#input-loader").focusout(function () {
// get value from input-loader textbox
var UserIDc = $(this).val();
$(function () {
// call /home/getuserdata and pass the user id from input-loader textbox
$.get("/home/getuserdata?userID=" + UserIDc, function (result) {
// set user name and email textbox value
$('#user-show').val(result.UserName);
$('#email-show').val(result.Email);
// show user name and email textbox
$("#user-show").show();
$("#email-show").show();
});
});
});
});
$(document).on({
ajaxStart: function () { $body.addClass("loading"); },
ajaxStop: function () { $body.removeClass("loading"); }
});
});
请注意,我在上面的代码中使用url /home/getuserdata
,因为我假设GetUserData
操作方法在HomeController.cs
中。如果GetUserData
是在一个不同的控制器,那么你必须改变url,即/users/getuserdata
,如果它是在UsersController.cs
。
为什么要把这么多函数放在一起呢?
问题是在document.getElementById("#input-loader");
使用#
。你应该把它去掉。
$(function () {
$body = $("body"),
$("#user-show").hide(),
$("#email-show").hide(),
$("#input-loader").blur(function () {
// you should not use # here:
// var UserIDc = document.getElementById("input-loader");
// and also it's simpler to use:
var UserIDc = $("#input-loader");
$.get("/mockjax", function () {
$("#user-show").show(),
$("#email-show").show(),
});
});
$(document).on({
ajaxStart: function () { $body.addClass("loading"); },
ajaxStop: function () { $body.removeClass("loading"); }
});
});