我有这种情况:
@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并在单击提交时调用方法控制器。可以做吗?如何?
问题:
在"表单"元素中,当未提及类型时,按钮的默认行为为"提交"
因此,单击按钮,您的表格就会立即提交。
解决方案:将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