2013-08-21 37 views
0

我一直在搞這個代碼似乎無法得到它的權利,並沒有找到任何關於使這項工作的好信息。MVC 4在提交之前休息Textfield

我需要清除搜索文本框並重置視圖。我想JavaScript來清除文本框,並提交表單將是完成這件事的方式,但似乎無法使其工作。我的起動代碼如下

按鈕代碼:

@using (Html.BeginForm()) 
{ 
    <div> 
     @Html.TextBox("SearchString") 
     <input type="submit" value="Search" /> 
     <input type="submit" id = "Reset" value ="Reset"/> 
    </div> 
} 

JAVASCRIPT:

<script> 
    $("#Reset").click(function (event) { 
     $("#Reset").val(""); 
    }); 
</script> 

我假設我需要做一個HERF在JavaScript調用之後重置文本框。我在正確的軌道上還是有一個更簡單的方法來完成這項工作。

回答

0

好了,所以從UmairP和this post一推,這裏是最終的解決方案:

表單提交按鈕

@using (Html.BeginForm()) 
{ 
    <div> 
     @Html.TextBox("SearchString") 
     <input type="submit" id = "Search" value ="Search" /> 
     <input type="submit" name = "Reset" value ="Reset"/> 
    </div> 
} 

控制器代碼:

var restButton = Request.Params.AllKeys.FirstOrDefault(key => key.StartsWith("Reset")); 
if (!String.IsNullOrEmpty(restButton)) 
{ 
    SearchString = ""; 
} 

我可以運行,其餘我的代碼正常與ModelState.Clear()清除表單字段回發。

1

你只需要這些

  1. 復位按鈕
  2. JavaScript代碼

重置文本

復位按鈕之一,請嘗試以下

<input type="reset" id = "Reset" value ="Reset"/> 

注意type=reset未提交

對於JavaScript,您需要將Id指定給文本框並使用它清空文本。 更改文本框代碼

@Html.TextBox("SearchString",null, new {@id = "txtSearch"}) 

和JavaScript來

<script> 
    $("#Reset").click(function (event) { 
     $("#txtSearch").val(""); 
    }); 
</script> 

順便說一句,你正在使用jQuery的代碼,但你有沒有在標籤中提到的jQuery。

+0

必須錯過標籤(已經晚了)。這種方式的問題,如果表單沒有提交,這將清除。但在我的情況下,這是一個文本搜索,因此表單被提交,並且搜索項被重新發送到文本框,因此重置將不會清除,因爲它是原始加載的一部分。我需要清除文本框,然後重新提交,以便重新提交表單和所有數據庫條目。 – jbolt

+0

在這種情況下,您可以爲您的重置按鈕保留'type = submit'並使用jQuery代碼提交搜索空文本 –

+0

是的,這就是我的想法。看到我的補充發布解決方案。我提出瞭解決方案,因爲它提供了處理表單重置的兩種非常好的方法。 – jbolt