jQuery输入值在ajax之后为空
我使用jqueryajax调用从控制器获取部分razor视图jQuery输入值在ajax之后为空,jquery,asp.net-mvc,razor,Jquery,Asp.net Mvc,Razor,我使用jqueryajax调用从控制器获取部分razor视图 $.ajax({ type: "POST", contentType: "application/json", url: url, async: false, data: JSON.stringify(data) }).success(function(result) { container.html(result); }).fail(function(result) { //
$.ajax({
type: "POST",
contentType: "application/json",
url: url,
async: false,
data: JSON.stringify(data)
}).success(function(result) {
container.html(result);
}).fail(function(result) {
// fail
});
这很好,返回的html是一个带有少量文本输入的表单。如果我查看元素,则输入值由调用返回的内容设置
例如:
<input class="valid" id="ItemId" name="ItemId" type="text" value="ItemValue">
如果我在输入字段中键入“NewValue”,则会调用on blur事件,但这里的itemId是“”,并且元素在chrome控制台中如下所示:
<input class="valid" id="ItemId" name="ItemId" type="text" value>
我希望value=“NewValue”。我遗漏了什么或做得不对
注意:如果我使用razor渲染局部视图而不从jQueryAjax检索它,那么这段jQuery代码可以正常工作。输入值按预期工作。您忘记了)}代码>
您是否尝试过var itemId=this.value
,并且您确定只有一个元素具有该ID.var itemId=$(“#”+e.target.ID).val()->这里您只是将值分配给另一个变量。实际设置该元素值的部分在哪里?该值由Ajax请求返回的HTML设置。输入带有razor呈现的值。在我的示例(第一个元素)中,值是“ItemValue”。这在铬元素检查器中得到确认。但是当jquery选择它时,元素没有值。
<input class="valid" id="ItemId" name="ItemId" type="text" value>
$(document).on("blur", "#ItemId", function(e) {
var itemId = $("#" + e.target.id).val();
});