2014-02-21 133 views
1
同一頁

多形式,我有以下HTML:如何處理

<form method='post' name='form".$post->ID."' > 
    <input type='submit' name='bid".$post->ID."' value='Licitar' class='bidvalue'> 
</form> 

而且,我有以下的jQuery 一個PHP循環內部處理提交事件:

<script> 
jQuery('input[type=submit]').click(function(e) { 
    e.preventDefault(); 
    jQuery.ajax({ 
     type: 'POST', 
     url: ajaxurl, 
     data: 'action=newbid&id=".$post->ID."', 
     success: function(msg){ 
      jQuery('#vehicle-value-box".$post->ID."').html(msg+',00€'); 
     } 
}); 
</script> 

當用戶點擊提交按鈕,我想更新當前出價的值,並使用AJAX更新該值。我與它做在的functions.php:

function newbid_ajax() { 
    $post_id = $_POST['id']; 
    $mybid = get_post_meta($post_id, 'start_price', true); 
    $mybid = $mybid + 100; 
    update_post_meta($post_id,'start_price',$mybid); 
    die($mybid); 
} 

但是,我無法處理表單提交事件分別。我有3個測試拍賣。當我點擊拍賣#1時,它更新拍賣#2的價​​值;當我點擊拍賣#2時,它更新拍賣#3;當我點擊拍賣#3時,沒有更新和e.preventDefault();不起作用(頁面重新加載)。

你可以看看網站在這個location。提交按鈕有文字「LICITAR」。

我知道有其他職位在那裏關於這個問題,但不知何故,我不能管理自己的解決方案,適應我的問題。

在此先感謝。

+0

看是否改變輸入類型按鈕,而不是提交任何幫助方式你是用Ajax提交。同樣,如果表單上有多個提交按鈕,則每次在提交時觸發相同的Ajax調用都不起作用。同時給你的按鈕單獨的ID並取代你的jQuery選擇器 –

+1

是一些PHP循環裏面的jQuery ?如果是的話,你可能在所有提交按鈕上有3個onclick事件,每個按鈕都有不同的$ post-> ID。如果是這種情況,請查看製作的HTML頁面的源代碼。然後你必須使用jQuery('form [name =「。$ post-> ID。」] input [type = submit]') –

+0

@HarshadaChavan將它改爲按鈕並沒有幫助。 –

回答

1

所提供網址的來源看你有一個jQuery單擊處理程序爲每個表單:

jQuery('input[type=submit]') 

這種方法可能導致每個表單提交按鈕有多個綁定,具體取決於代碼的結構。

解決的辦法是有一個$(document).ready(...)內聲明只有一個點擊處理程序。 該按鈕和功能下面已被修改,以在這種情況下(未測試)工作:

<input type='submit' name='".$post->ID."' value='Licitar' class='bidvalue'> 

下面的函數聲明只有一次,任何循環外,一般在文件的<head></head>部分。

$(document).ready(function() 
{ 
    jQuery('.bidvalue').click(function(e) { 
     e.preventDefault(); 
     jQuery.ajax({ 
      type: 'POST', 
      url: ajaxurl, 
      data: 'action=newbid&id='+e.target.name, 
      success: function(msg){ 
       jQuery('#vehicle-value-box'+e.target.name).html(msg+',00€'); 
      } 
    }); 
}); 
+0

這是一個改進。但我仍然有兩個問題。一,我在我的網站上有其他不同的提交,即登錄提交。如何編輯該腳本以僅與拍賣提交一起使用?而且,不知何故,具有該值的框不能正確更新,而是將新值更改爲「,00€」。味精變量似乎是空的。 –

+0

您可以按類選擇按鈕,而不是選擇每個提交按鈕:'jQuery('。bidvalue')'。我也更新了上面的腳本。 –

+0

你也可以通過'console.debug()'或'alert'調試'msg'變量值,這樣你就知道問題是否來自服務器。 –

0

如果我正確地指出你有多個表格和eatch,需要有他自己的ajax函數?

比你必須給提交ID:

<form method='post' name='form".$post->ID."' > 
    <input type='submit' name='bid".$post->ID."' id="submit-1" value='Licitar' class='bidvalue'> 
</form> 

新的JS:

<script> 
$('form').submit(function(e) { 
    e.preventDefault(); 
    jQuery.ajax({ 
     type: 'POST', 
     url: ajaxurl, 
     data: 'action=newbid&id=".$post->ID."', 
     success: function(msg){ 
      jQuery('#vehicle-value-box".$post->ID."').html(msg+',00€'); 
     } 
}); 
</script> 

編輯嘗試

+0

我嘗試添加到輸入標記id ='submit「。$ post-> ID。」'然後將腳本更改爲jQuery('#submit'。$ post-> ID。'')。click(。 ..)。我與Roman Hocke的建議有同樣的問題,這樣做頁面重新加載,沒有值更新。 –

+0

我編輯的帖子,你可以請嘗試嗎? – Rickert

+0

該編輯將其恢復爲原始問題:值已更新,但未在正確的拍賣中。我可能會將所有這些添加到循環中。 –