我需要你的帮助。我创建了这个简单的脚本。我的目标是用这个表单的文本区域内的文本更新我的数据库。问题是脚本只有在我第二次按下提交按钮时才能工作。不知什么原因(至少对我来说),它第一次不起作用。。你能帮我吗?
<script>
$(document).ready(function(){
$("#form_dove").submit(function(e){
e.preventDefault();
$("#click_dove").click(function(){
testo = $("#textarea_dove_2").val();
alert(testo);
data = 'testo='+testo;
$.ajax({
type:"POST",
url:"php/update_dove.php",
data: data,
cache: false,
success: function(html){
$('#textarea_dove_2').val(html);
alert('Aggiornato!');
}
});
});
});
});
</script>
<form name="form_dove" method="post" id="form_dove">
<div id="textarea_dove">
<textarea rows="17" cols="90" name="textarea_dove_2" id="textarea_dove_2" >
<?php echo("$testo_dove"); ?>
</textarea>
</div>
<div id="form_submit_dove">
<input type="submit" value="SALVA E AGGIORNA" id="click_dove">
</div>
</form>
$("#click_dove").click
在提交中。
这意味着只有在提交表单后,单击才会激活。代码很清楚:)
在您的情况下,ajax调用是在按钮单击处理程序中完成的,但按钮点击处理程序是在表单提交处理程序中注册的,因此只有在第一次表单提交(由提交按钮单击触发)后,执行ajax调用的单击事件处理程序才会注册。
解决方案:您不需要点击事件处理程序,将ajax调用移动到提交事件处理程序
$(document).ready(function () {
$("#form_dove").submit(function (e) {
e.preventDefault();
testo = $("#textarea_dove_2").val();
alert(testo);
data = 'testo=' + testo;
$.ajax({
type: "POST",
url: "php/update_dove.php",
data: data,
cache: false,
success: function (html) {
$('#textarea_dove_2').val(html);
alert('Aggiornato!');
}
});
});
});
这里不需要两个函数。提交表单时会调用$("#form_dove").submit函数,单击按钮时会调用美元("#click_dove").click函数。
因为您将click函数的定义放在了submit函数中,所以直到表单提交(即第一次单击按钮时),click函数才被声明(即不存在)。然后,第二次按下按钮时,单击功能完成了ajax操作。
在这种情况下,最简单的方法就是在提交函数中进行您想要的处理——这就是您希望在提交表单时进行的处理。如果你需要在提交表格之前检查表格是否填写正确,请使用点击功能。
<script>
$(document).ready(function(){
$("#form_dove").submit(function(e){
e.preventDefault();
testo = $("#textarea_dove_2").val();
alert(testo);
data = 'testo='+testo;
$.ajax({
type:"POST",
url:"php/update_dove.php",
data: data,
cache: false,
success: function(html){
$('#textarea_dove_2').val(html);
alert('Aggiornato!');
}
});
});
$("#click_dove").click(function(){
//put some validation in here if you want
});
});
</script>