2015-10-13 53 views
0

我有一个文本框和MVC中的按钮,通过单击按钮控制器操作被调用,并且Jquery中的其他代码也被调用。我不知道如何用鼠标将文本框中的这个按钮替换掉。所以当用户在文本框中键入内容并尝试转到下一个文本框时,所有这些操作都会发生。文本框在MVC中滑出Javascript

这是我的MVC视图代码创建文本框和按钮:

Offer ID: 
@Html.TextBoxFor(model => model.ID, new { id = "ID" }) 

<button id="btnSearch" data-url="@Url.Action("GetOffer", "LookUp")" class="btn btn-success search pull-left">Search</button> 

这是Jquery的功能,通过点击按钮是呼叫:

<script type="text/javascript"> 
    $(function() { 

    $("#btnSearch").click(function (evt) { 
     evt.preventDefault(); 
     var url = $(this).data('url'); 

     getByOfferId(url); 
    } 
    ); 
}); 

我不知道如何指定此代码在文本框中:

data-url="@Url.Action("ActioName", "controllerName")" 

以及用什么操作调用而不是此行:

$("#btnSearch").click(function (evt) { 
+1

您不希望'滑出'。你需要处理'.change()'事件 - '$('#ID')。change(function(){//你的代码});''你可以删除'new {id =“ID” }'(它将'id'属性'改变'到它已经是什么) –

+0

@StephenMuecke感谢这行data-url =“@ Url.Action(”ActioName“,”controllerName“)”? – Alma

+1

你可以把它放在文本框中 - “@ Html.TextBoxFor(m => m.ID,new {data_url =”Url.Action(“ActionName”,“controllerName”)“})'并用'var url ='(this).data('url');'或者简单地把它放在'.change()'函数 - 'var url ='@ Url.Action(“ActionName”,“controllerName”)';' –

回答

0

而不是mouseout,处理.change()事件的文本框。您可以将网址添加到使用

@Html.TextBoxFor(m => m.ID, new { data_url = "Url.Action("GetOffer", "LookUp")" }) 

注意文本框中的文本框的id属性将默认为(由HTML辅助生成)id="ID",让你不必new { id = "ID" }。然后,该脚本可以

$("#ID").change(function() { 
    var url = $(this).data('url'); 
    getByOfferId(url); 
} 

或者你可以只使用(不data-url属性)假设剧本不是一个单独的文件。

$("#ID").change(function() { 
    var url = '@Url.Action("GetOffer", "LookUp")'; 
    getByOfferId(url); 
}