2010-09-23 122 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()事件对你更好吗?如果是这样,请点击()事件设置为一个类似