簡體   English   中英

從單擊事件獲得的 Javascript 對象傳遞給無法作為表單發布的函數

[英]Javascript object obtained from on-click event passed to a function not able to be posted as form

感謝任何見解...

我捕獲表單按鈕單擊事件以進行提交:

$('.saveItem').on( 'click', function(e) {
    submitItemSave(true, e); 
});

在單擊時調用用戶定義的函數並將事件 e 傳遞給:

function submitItemSave(first_call, currEv) {

它最初會進行一些輸入驗證(即 first_call 參數為真的地方)

然后在沒有驗證錯誤的情況下調用自身,設置“first_call” = false

if(first_call){
    $('#multiCribSubmitMsg').show();
    setTimeout(function() { submitItemSave(false, currEv) }, 1);
} else {
    var currForm;

然后,它在上面的“else”處繼續,設置:

currForm = currEv.currentTarget.closest('form')

我按如下方式轉儲該變量:

console.log('bottom: ', typeof(currForm));

這使:

底部:對象

和:

console.log('last: ', currForm)

這給出了非常類似於表單的輸出,如下所示***。

但是,當我嘗試發布時

$.post('actRequestItemForm.cfm', currForm.serialize(), function() {
    $('#multiCribSubmitMsg').hide();
    loadUpExistingItems();
});

我得到:

userRequestForm.js:415 Uncaught TypeError: currForm.serialize is not a function at submitItemSave (userRequestForm.js:415:49) at userRequestForm.js:370:31 ...

*** userRequestForm.js:414最后:

<form class="itemForm" name="itemEditForm18221">
<input type="hidden" name="requestId" value="76041">
<input type="hidden" name="itemId" value="18221">
<div class="itemFormLabel reqd">" Crib/Box"::after</div>
<div class="itemFormInput"><input type="number" name="cribBox" id="cribBoxHint" value="5001" required="required" class="expand validateMe ui-autocomplete-input" maxlength=" 50" autocomplete="off"></div>
<div class="itemFormLabel reqd">" Item Number"::after</div>
<div class="itemFormInput"><input type="text" name="itemNumber" value="881804" required="required" class="expand validateMe ui-autocomplete-input" maxlength=" 25" autocomplete="off"></div>
<div class="itemFormLabel reqd">" Quantity"::after</div>
<div class="itemFormInput"><input type="number" name="quantity" value="7" required="required" class="expand validateMe" maxlength=" 2"></div>
<div class="itemFormLabel reqd">" Delivery Location"::after</div>
<div class="itemFormInput"><input type="text" name="ftwDeliveryLocation" value="q / r / s" required="required" class="expand validateMe ui-autocomplete-input" maxlength=" 50" autocomplete="off"></div>
<div class="itemFormValidationMessage"></div>
<input type="button" value="Save Changes" class="saveItem">" &nbsp;&nbsp;&nbsp; "
<input type="button" value="Cancel Changes" class="cancelItemChange">
<input type="button" value="Remove" class="buttonRemove" myid style="display: none;">
</form>

userRequestForm.js:415 Uncaught TypeError: currForm.serialize is not a function
    at submitItemSave (userRequestForm.js:415:49)
    at userRequestForm.js:370:31
submitItemSave @ userRequestForm.js:415
(anonymous) @ userRequestForm.js:370
setTimeout (async)
submitItemSave @ userRequestForm.js:370
(anonymous) @ userRequestForm.js:303
dispatch @ jquery-1.12.4.min.js:3
r.handle @ jquery-1.12.4.min.js:3

剛剛解決了這個錯誤:

currForm = $(currEv.currentTarget.closest('form'));

每(接受的答案):

在表單驗證的 submithandler ajax 中得到 Uncaught TypeError: form.serialize is not a function

感謝您的關注!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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