簡體   English   中英

以編程方式提交表單不會調用內部函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM