2012-08-29 20 views
0

我有很少的JavaScript編程技巧,所以這一定是它的問題。我的問題並不複雜,但我找不到答案,我嘗試了幾乎所有的東西,但正如我所說的,我在JavaScript編程方面蹩腳。PHP,Javascript - 動態表單ID和動態驗證

我的問題是,我有一個php頁面,在這個頁面上有多種形式的mysql查詢。我使用它們將動態生成的隱藏字段值發佈到另一個php文件中,並且可以在不刷新主頁的情況下使用它們的發佈值。表單ID(或名稱)也是由mysql查詢生成的。我使用javascript來驗證(?)表單並將其隱藏的內容發送到另一個頁面。

的Javascript:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("#1").validate({ 
      debug: false, 
      submitHandler: function(form) { 
       $.post('process_like_dislike.php', $("#1").serialize(), function(data) { 
        $('#results').html(data); 
       }); 
      } 
      }); 
    }); 
    </script> 

正如你所看到的,在這種情況下,形式ID爲1。我生成一個頁面上近40個獨特的形式,這取決於MySQL的查詢。

PHP的:

<form name='$formnumber' id='$formnumber' action='' method='POST'> 
<input type=hidden value='$us_id' name='us_id' id='us_id'> 
<input type=hidden value='$an_id' name='an_id' id='an_id'> 
<input type=hidden value='1' name='on' id='on'> 
<input type=submit class=something value='' title='Something'> 
</form> 

我不知道我應該怎麼做的JavaScript代碼進行動態驗證上提交所選定的形式。我試圖在javascript中獲取php formnumber變量,但這並沒有幫助。我不知道是否有另一種方式,但我只知道這一個。我需要將動態生成的隱藏值傳遞給另一個頁面,但我需要一個動態生成的JavaScript,否則我不知道。

這段代碼的主要概念,我做了一個頁面,您可以評價一個事物,那個事情得到了隱藏的值,我需要在後期格式,因爲這是我可以決定哪個按鈕的唯一方法已經被按下來在第二個php文件中執行mysql查詢而不刷新當前的文件。我不想要簡單的帖子,因爲我會丟失上一頁,我不想刷新頁面。

請幫幫我,謝謝你們。

+0

您是否意味着頁面上的所有表單都具有相同的代碼?我認爲你應該可以通過將.validate調用改爲$(「form」)。validate和其他$(「#1」)來改變$(this) –

回答

0

@邁克爾·惠勒的解決方案是不是更優雅是什麼我最初想出了 - 但是,'這'沒有設置爲(我測試)的形式,所以你必須改變他的解決方案爲$(形式)爲其他$(「#1」)而不是$(這),它會工作完美。 =)

+0

如果我使用$(表單)或$(this),那麼帖子值將是空的,但它會帶我到另一頁。我需要隱藏的表單值,所以我認爲這是行不通的。任何解決方案 – thenamelesshero

+0

我認爲問題已經解決:function submitreg(id){$ .ajax({type:「POST」,url:「process_like_dislike.php」,data:$(id).serialize(),success:function(data ){$('#results')。html(data);}}); }我用onclick這樣的事件:$ formid保存了動態生成的表單id。不管怎麼說,還是要謝謝你。 – thenamelesshero

+0

如果您對仍然使用驗證插件感興趣仍然使用與原始版本相同的方式: 將驗證函數應用於$('form')列表時,無論出於何種原因,它只適用於(正確)1形式(我只是去發佈一個鏈接到我的測試代碼(當我先前測試它是一個單一的形式)。 這將使用任何數字雖然:[鏈接](http://www.chelseau.com/ test/jstest.html) 無論如何,在我的測試代碼中有重複的ID,所以我知道HTML不會驗證,但ID不是必需的 - 我只是將它們留在原來的表單中,因爲它們是原始表單的一部分。 –