[英]Form submit programmatically does not invoke inner function
我具有以下自動完成功能。 單擊建議值之一時,將自動提交表單:
var submitAutocompleteForm = function (event, ui) {
var $input = $(this);
$input.val(ui.item.value);
var $form = $input.parents("form:first");
$form.submit();
};
var createAutoComplete = function () {
var $input = $(this);
var options = {
source: $input.attr("data-source-autocomplete"),
select: submitAutocompleteForm,
};
$input.autocomplete(options);
};
$("input[data-source-autocomplete]").each(createAutoComplete);
這樣很好。 表單具有以下附加的隱藏輸入:
<input id="autocomplete" name="autocomplete" type="hidden" value="False" />
現在,我想更改submitAutocompleteForm
函數以在提交時將此輸入的值更改為true
:
$form.submit(function (e) {
$(this).children('#autocomplete').val(true);
});
但是永遠不會調用此內部函數。 即使嘗試使用內部簡單alert
,也永遠不會調用它。
我究竟做錯了什么?
編輯: HTML代碼:
@using (Ajax.BeginForm("LoadBook", new { id = Model.CollectionId }, new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "bookDetailsPlaceHolder",
OnComplete = "animateBookLoad"
}))
{
@Html.Hidden("autocomplete", false)
<div class="form-horizontal">
<div class="form-group form-custom">
<div class="col-md-12">
@Html.TextBox("bookDetails", null, new { @class = "form-control pull-left", @placeholder = "Szukaj tytułu", data_source_autocomplete = Url.Action("Autocomplete") })
<span class="input-group-btn">
<button id="addCopySearchBtn" class="btn btn-default" type="submit">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
</div>
</div>
</div>
}
<div id="bookDetailsPlaceHolder" style="display:none">
</div>
另外,我注意到,當我打手動的submit
按鈕,內部函數被調用......所以,在我看來, $form.submit()
提交表單(明顯),但$form.submit(function () { }
實際上是在提交表單時被調用的。
我將嘗試指定所需的選項:我需要SubmitAutocompleteForm函數在TextBox中提交值,而且還需要更改隱藏輸入的值。 我無法編寫類似$('#form").on('submit', function () { }
因為我不希望用戶手動提交表單時更改輸入的值。
$form.submit(function (e) {
e.preventDefault();
$(this).children('#autocomplete').val(true);
});
這阻止了表單的發送 ,這意味着下面的功能將能夠操縱表單元素。 但是,這意味着您必須通過JavaScript AJAX表單數據或再次提交表單 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.