2010-09-23 71 views
0

我有一個按鈕,調用onclick事件後調用JavaScript函數。該函數驗證我的條目,然後創建一個ajax對象來填充我的信息表。一切似乎都做工精細,除非我添加以下代碼:jquery提交與javascript事件

echo "$(document).ready(function() { $(\"#newDate\").submit(function() { 
    ValidateForm('$ID'); 

    }); });"; 

ValidateForm()是相同的功能我onclick事件呼叫,除了似乎沒有放在一個空的警報後,我發送Ajax請求的工作不。在環視後,我發現a similar problem。我理解那篇文章中的問題,除非我做了什麼,我無法解決我的問題。在成功就緒狀態建立後,我嘗試將我的send移動到匿​​名函數中,甚至嘗試將我的最終參數設置爲-false-。 (我知道是不是一個有效的解決方案,但它並沒有反正工作。

那麼,爲什麼一切都完美地與onclick事件工作,但不是一個jQuery提交方法?提前

function ValidateForm(CQID) 
    { 

     var dt=document.newDate.uinput; 

     if (isDate(dt.value)==false){ 
     dt.focus(); 
     return false; 
     } 

     populateDateTable(dt.value, CQID); 

    } 



function populateDateTable(dateString, CQID) 
{ 
    //After recieving a date and checking validity populate a table of proceeding dates. 
    var xmlhttp = createReq(); 

    xmlhttp.onreadystatechange=function() 
    { 

    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     document.getElementById("BoxCarCapacityDates").innerHTML= xmlhttp.responseText; 
     } 
    } 

    xmlhttp.open("GET",'populateDateTable.php?dateString='+dateString+'&CQID='+CQID, true); 
    xmlhttp.send(); 



} 

謝謝(切換到一切jQuery的緩慢..)

echo "$(document).ready($(function() 
{ 

    $('#newData').click(function() 
    { 

     var dt=document.newDate.uinput; 

     if (isDate(dt.value)==false) 
     { 
      dt.focus(); 
      return false; 
     } 

     $.get(
     { 
     url: 'populateDateTable.php', 
     data: 'dateString='+dateString+'&CQID='+CQID, 
     success: function() 
       { 
        $('#BoxCarCapacityDates').html(response); 
       } 
     }); 


    }); 
}); 
); </script>"; 

上面的代碼提交作爲一個答案,但它似乎並沒有在所有的工作。

+0

是什麼#newDate?一個按鈕?形成? – 2010-09-23 22:39:31

+0

這是我的表單ID。 – Aya 2010-09-23 22:41:03

+0

另外,如果您要在PHP中嵌入JavaScript,請嘗試使用heredoc。 $ script = << SCRIPT SCRIPT; echo $ script。它非常適合多行字符串,並且特殊字符不需要轉義。 – 2010-09-24 12:29:27

回答

0

是否更換按鈕進入提交按鈕?沒有這個,表單將不會提交。

您還需要添加:

e.preventDefault(); 

到你的功能,你都加到表單的提交事件,以確保形式不只是POST(或GET)的信息,它的action URL:

echo "$(document).ready(function() { $(\"#newDate\").submit(function(e) { 
e.preventDefault(); 
ValidateForm('$ID'); 

}); });"; 
+0

當我將其更改爲提交按鈕時,該按鈕的事件不起作用。這並不重要,因爲該功能在我使用按鈕時起作用。並添加e.preventDefault();到我提交函數的結尾似乎不起作用。我唯一的問題是將我的JavaScript函數掛接到我的提交操作中,讓我的ajax實際工作。 – Aya 2010-09-23 22:49:04

0

你準備好jQuery'你的代碼?如果是這樣,試試這個。

$(function() { 

$('#newData').click(function() { 

    var dt=document.newDate.uinput; 

     if (isDate(dt.value)==false){ 
      dt.focus(); 
      return false; 
     } 

    $.get({ 
     url: 'populateDateTable.php', 
     data: 'dateString='+dateString+'&CQID='+CQID, 
     success: function(){ 
      $('#BoxCarCapacityDates').html(response); 
     } 
    }); 


}); 

}); 
+0

由於某種原因,根本不起作用。我附上了我的問題與您的建議,以確保我實現它的權利。 – Aya 2010-09-23 22:54:20

+0

使用提交是否有目的?你真的提交表單嗎?或者click()事件對你更好嗎?如果是這樣,請點擊()事件設置爲一個類似