2016-06-29 34 views
0

我遇到使用下面的查詢的誤差代碼的片段:)查詢的OnSubmit問題

$('form[action="/home/service/"]').on("click", (function(event) { 
    if ($("#id1").val() == "" && $("#id2").val() == "") { 
     alert("Invalid entry"); 

     event.preventDefault(); 

    } else { 
     $('form[action="home/service/"]').submit(); 
    } 
    }); 

的event.preventDefault(;儘管它應該提交。我試過使用.off(「click」,function);但這不起作用,是同樣的問題。

一旦preventDefault()方法被觸發,我無法在問題解決後重新提交表單嗎?我看到有幾個人遇到這個問題,但是他們的修復並沒有解決我的問題。

UPDATE 這是我現在,但我仍然接受的問題,問題是它,但是隻要我嘗試用它看來,提交的值,以重新提交作品上提交原按鈕被鎖定,有沒有人遇到過這個?下面是我更新的代碼:

//function on 
function checkForm(event) 
{ 
debugger; 
if ($("ID1, ID2").val() != ""){ 

return; 
} 

else{ 
event.preventDefault(); 
$("#alerts-row").html("<div class='alert_box red'><p>Please Ensure that you have filled in at least one item number below!</p></div>"); 

$('form[action="Form"]').unbind("submit", checkForm); 
} 
} 

$('form[action="form"]').on("submit", checkForm); 

感謝,

Gavey

+0

您確定要在表格上單擊處理?或者你想要提交按鈕?你可能真的想'.on(「submit」...)' – 4castle

+0

這將工作我猜:'else {this.submit(); }'。 'this',而不是'$(this)'。但是肯定的是,你不應該將click事件綁定到表單。而是將提交事件綁定到它或單擊事件到任何':submit'子元素。僅供參考,可以在表單的輸入元素上按下'return'來引用表單,但是會在第一個表單的提交元素([w3c spec](https://www.w3.org/TR/html5/) forms.html#隱含提交))。 –

+0

對不起,我一直在使用的是on(「submit」,函數)我正在嘗試各種可能的方式,看看它是否可以解決問題,但不幸的是它不會嘗試兩個新的今天的方式,看看我們是否成功。謝謝 – Gavey23

回答

0

嘗試把它之前的if語句

$('form[action="/home/service/"]').on("click", (function(event) { 
     event.preventDefault(); 
     if ($("#id1").val() == "" && $("#id2").val() == "") { 
      alert("Invalid entry"); 

     } else { 
      $('form[action="home/service/"]').submit(); 
     } 
     }); 
+0

我現在試過了,這仍然沒有停止發生問題: 事件將運行一次,只要它再次運行它不會運行之後。正如你們所說的,我已經改變了.on(「submit」,function) – Gavey23

0

我認爲正確的方法是使用提交事件。如果你這樣做,那麼如果你沒有驗證你會阻止默認值(正如你所做的那樣),並且在成功時你不會阻止默認值。

沒有什麼能阻止你在一些簡單地調用form.submit()的元素上單擊事件,但你應該考慮使用<按鈕>,而不是自動提交。

0

要解決我遇到的問題,我們使用了不顯眼的驗證,在一些示例的幫助下,我們能夠創建或聲明並允許我們在窗體上發佈正確的驗證。

$(document).ready(function(){ 
    // Register new validation adapter 
    $.validator.unobtrusive.adapters.addBool('minimumselect'); 

    // Add validator to controls 
    $input = $("#Input1"); 
    $input.attr('data-val', 'true'); 
    $input.attr('data-val-minimumselect', 'Please provide either this or Number 2'); 

    $input2 = $("Input2"); 
    $input2.attr('data-val', 'true'); 
    $input2.attr('data-val-minimumselect', 'please provide this or Ref Number 1'); 

    // Refresh form - needed to pick up new validator 
    refreshFormValidators(); 
}); 

感謝,

理查德