2016-11-28 49 views
0

我有這種情況:ASP.NET按鈕點擊調用JavaScript函數BeginForm停止表單提交

@using (Html.BeginForm("CreateNewApplication", "Token", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <label for="app-name" class="op-form op-label">Application:</label> 
    @Html.TextBoxFor(a => a.appName, new { @placeholder = "Nome dell'applicazione", @class = "op-form op-text app-name" })<br /> 
    <label for="token" class="op-form op-label">Token:</label> 
    <button id="generate-token" class="op-form" value="Genera Token">Generate Token</button> 
    @Html.TextBoxFor(a => a.appToken, new { @placeholder = "Token", @id = "token", @class = "op -form op-text token" })<br /> 
    <input id="submit" type="submit" class="op-form op-submit" value="Submit" /> 
} 

和按鈕調用此JavaScript函數:

$('#generate-token').click(function() { 
    var token = Math.random().toString(36).slice(2); 
    $("#token").val(token); 
}); 

的問題是,當點擊該按鈕,JavaScript函數被正確調用,但在我的令牌控制器中也稱爲CreateNewToken方法。雖然我只想點擊按鈕調用Javascript,點擊提交時調用方法控制器。 有可能做到嗎?怎麼樣?

+0

你應該使用的preventDefault() - 見http://www.w3schools.com/jquery/event_preventdefault.asp '$( '#生成令牌')。 (token); }()函數(e) );' – phooey

回答

0

問題:

裏面一個「形式」元素時,類型不提到一個按鈕的默認行爲「提交」

因此您的形式得到儘快提交你點擊按鈕。

解決方案: 添加type="button"屬性到您的button元素。

<button id="generate-token" type="button" class="op-form" value="Genera Token">Generate Token</button>

來源http://www.w3schools.com/tags/tag_button.asp

+0

謝謝!是工作。 – Giobbo