2009-06-01 43 views
0

我上週試圖在沒有解決方法的情況下提出這個問題。我仍然無法得到這個工作。我想要做的是將通過所見即所得編輯器輸入的數據提交給JQuery腳本我將首先告訴用戶他們是否試圖提交一個空的文本框我需要做的最後一件事是告訴用戶如果他們的數據輸入成功或沒有。幫助使用javascript submit()函數將表單提交給JQuery腳本

我有一個JQuery腳本內部的問題,因爲當我點擊保存按鈕時沒有任何內容正在執行。

此編輯器使用javascript submit(),它與編輯器上的小保存圖標綁定。當用戶按下編輯器上的按鈕時,它將觸發表單標籤中的功能。這就是我所能得到的。

我認爲這是與表單標籤的問題屬性,因爲當我點擊編輯任何地方,編輯跳下了屏幕的底部。我相信這與我在form標籤中使用的onclick事件有關。

JQuery腳本的第一部分應該處理textarea的表單驗證。如果這真的很難做到,我願意放手,只是處理所有服務器端,但我只需要將數據發送到JQuery腳本,以便我可以將它發送到我的PHP腳本。

感謝您的幫助球員。

<form name="rpt" class="rpt" id="rpt" action="" onclick="doSave(); return false;"> 

function doSave() 
{ 
    $(function() 
    { 
    $('.error').hide(); 
    $(".rpt").click(function() 
    { 
     $('.error').hide(); 
     var textArea = $('#report'); 
     if (textArea.val() == "") 
     { 
     textArea.show(); 
     textArea.focus(); 
     return false; 
     } 
     else 
     { 
      return true; 
     } 
     var dataString = '&report='+ report; 
     alert (dataString);return false; 

     $.ajax({ 
      type: "POST", 
      url: "body.php?action=customer", 
      data: dataString, 
      dataType: 'json', 
      success: function(data){ 
       $('#cust input[type=text]').val(''); 
       var div = $('<div>').attr('id', 'message').html(data.message); 
       if(data.success == 0) { 
        $('#cust input[type=text]').val(''); 
        $(div).addClass('ajax-error'); 
       } else { 
        $('#cust input[type=text]').val(''); 
        $(div).addClass('ajax-success'); 
       } 
       $('body').append(div); 
      } 
     }); 
     return false; 
    }); 
    }); 
} 

回答

0
function X() { 
    $(function() { 
     //... things you want to do at startup 
    }); 
}; 

不會做你想要的。什麼都不會執行,因爲你永遠不會告訴它被執行。

你可能想嘗試這樣的:

<script type="text/javascript"> 
    jQuery(function($) { 
     //... things you want to do at startup 
    }); 
</script> 

而且,你想要的onsubmit事件form的。您可以使用

$('#theform').submit(function() { 
    //... perform the ajax save 
}); 

另外,您可能需要查看Form plugin

+0

我在我的html中有一個javascript標記。這是你在說什麼嗎? – user109162 2009-06-01 00:31:54

+0

這調用JQuery腳本 – user109162 2009-06-01 00:32:14

2

有幾件事情需要改變。首先這個:

<form name="rpt" class="rpt" id="rpt" action="" onclick="doSave(); return false;"> 

不是jQuery方式。加上它不是你想要的click()事件。這樣做:

<form name="rpt" class="rpt" id="rpt" action=""> 

<script type="text/javascript"> 
$(function() { 
    $("#rpt").submit(do_save); 
}); 
</script> 

建設:

$(function() { 
    .. 
}); 

的意思是 「當文件已準備就緒,執行該代碼」。這是簡寫​​形式,並完全等同於稍長:

$(document).ready(function() { 
    .. 
}); 

此代碼:

$("#rpt").submit(doSave); 

意味着「找到ID‘RPT’的元素,並附加一個事件處理函數,這樣當'submit'事件在其上執行,調用do_save()函數「。

和更改DoSave就會()到:

function doSave() { 
    $('.error').hide(); 
    $(".rpt").click(function() { 
    $('.error').hide(); 
    var textArea = $('#report'); 
    if (textArea.val() == "") { 
     textArea.show(); 
     textArea.focus(); 
     return false; 
    } else { 
     return true; 
    } 
    var dataString = '&report='+ report; 
    alert (dataString);return false; 

    $.ajax({ 
     type: "POST", 
     url: "body.php?action=customer", 
     data: dataString, 
     dataType: 'json', 
     success: function(data){ 
     $('#cust input[type=text]').val(''); 
     var div = $('<div>').attr('id', 'message').html(data.message); 
     if (data.success == 0) { 
      $('#cust input[type=text]').val(''); 
      $(div).addClass('ajax-error'); 
     } else { 
      $('#cust input[type=text]').val(''); 
      $(div).addClass('ajax-success'); 
     } 
     $('body').append(div); 
     } 
    }); 
    }); 
    return false; 
} 

注:返回false是在正確的位置,現在因此它實際上阻止提交表單回服務器。 action =「」只意味着表單會提交回當前的位置,所以你必須阻止它。

相關問題