JQuery and Submit button


JQuery and Submit button

我需要你的帮助。我创建了这个简单的脚本。我的目标是用这个表单的文本区域内的文本更新我的数据库。问题是脚本只有在我第二次按下提交按钮时才能工作。不知什么原因(至少对我来说),它第一次不起作用。。你能帮我吗?

<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>