亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

忽略了jQuery對話框按鈕,繼續(xù)提交表單
P粉832212776
P粉832212776 2023-08-15 12:55:00
0
1
639
<p>我有以下的表單代碼和javascript代碼如下所示。問題是當執(zhí)行到<code>validateDialogForm()</code>時,如果滿足某些條件,會顯示一個jquery對話框。我確實能夠看到對話框出現(xiàn)了幾秒鐘,但它不會停留在那里,表單仍然繼續(xù)提交。我希望表單在一段時間內(nèi)暫停,只有當用戶點擊<code>保存</code>按鈕時才提交。我嘗試在<code>validateDialogForm()</code>函數(shù)結束前加上<code>return false;</code>,以阻止表單提交,但當我點擊對話框的保存按鈕時,它不會繼續(xù)提交表單,而是保持原樣。我在這里做錯了什么?以下代碼的當前狀態(tài)是,無論jquery對話框如何,表單都將繼續(xù)提交。(為了聲音起見,刪除了很多不相關的代碼)</p> <p><br />></p>
$('#checklist_dialog').hide();

函數(shù) validateDialogForm() {

  $('#checklist_dialog').show();
  var isConfirmed = false;

  //步驟:1 檢查是否選擇了選項 B。
  var 選定的值 = "";
  var selected = $("input[type='radio'][name='sampleChoice']:checked");

  if (selected.length > 0) {
    selectedVal = selected.val();
    console.log("所選選項為 " + selectedVal);
  }

  if (selectedVal === "choiceB") {
    if ($("#choiceBstatus").val() === "true") {
      //顯示對話框
      $('#checklist_dialog').dialog({
        模態(tài):真實,
        最大寬度:600,
        最大高度:500,
        寬度:600,
        高度:500,
        覆蓋:{
          不透明度:0.7,
          背景:“黑色”
        },
        紐扣: {
          “保存”:函數(shù)(){
            $(this).dialog('關閉');
            alert("在被點擊的保存按鈕內(nèi)");
            $("#choiceBstatus").val("假");
            //已確認= true;

            返回真;
          },
          “取消”:函數(shù)(){
            $(this).dialog('關閉');
            Alert("在保存表單之前,您必須完成/保存清單!");
            // 返回假;

          }
        }
      });
      /* e.preventDefault();
                            返回假; */
    } // if($("#choiceBstatus").val() == true ){ 結束

    if ($("#choiceBstatus").val() === "false") {
      // 返回真;
    }
  } //if(selectedVal === "choiceB"){ 結束

  //返回假;               

  /* if(已確認){
    
    返回真;
  }         
  別的 {
    返回假;
  }
   */
}</pre>
<表類=“noPrint”> //一些div </tbody> </表>
<表類=“noPrint”> <正文> </tbody> </表>
; <表類=“noPrint”> <正文>
- </td> </tbody> </表>
</form></pre> <p><br />></p>
P粉832212776
P粉832212776

全部回復(1)
P粉764836448

如評論中所提到的,當對話框顯示時,您需要阻止表單提交,因為對話框不會阻塞UI。除非您停止它,否則它將繼續(xù)提交。在您按下對話框中的按鈕后,您可以真正提交表單。

現(xiàn)在的棘手之處在于,當您真正提交表單時,這也會再次觸發(fā)onsubmit函數(shù)!一個好的方法是設置一個標志。請參見下面的偽代碼,它應該基本上做到了您想要的。

<form id="orderForm"
      action="/mywebsite/order.htm"
      method="POST"
      onsubmit="return (validateOrderForm(this) && validateDialogForm(this))">
...
let real_form_submit = false;

function validateDialogForm(theForm){
  if(!real_form_submit) {
    $('#checklist_dialog').dialog({
      ...
      buttons: {
        "SAVE": function() {
          $(this).dialog('close');
          real_form_submit = true;
          theForm.submit()
        },
        "CANCEL": function() {
          $(this).dialog('close');
        }
      }
    });
  }

  return real_form_submit;
}
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板