2011-09-12 55 views
2

我有一個jQuery中的代碼,它首先使用ajax驗證表單,然後重新提交相同的表單到另一個位置,但重新提交提交按鈕值不發送.. 什麼將問題??form.submit()不包括髮送提交按鈕

這裏的js代碼:

$.ajax({ 
    'type': 'post', 
    'url': '/inc/do.php', 
    'data': $form.serialize(), 
    beforeSend: function(){ 
     $form.find(':input').attr('disabled', true); 
     $form.find('.btn').addClass('bdsbld'); 
     $form.find('.blkr').css('display', 'block'); 
    }, 
    error: function(){ 
     Recaptcha.reload(); 
     $form.find(':input').attr('disabled', false); 
     $form.find('.btn').removeClass('bdsbld'); 
     $form.find('.blkr').css('display', 'none'); 
    }, 
    success: function(d){ 
     $form.find(':input').removeAttr('disabled'); 
     if(res=isJSON(d)){ 
      if(!res.err && res.msg.toLowerCase()==='ok'){ 
       if(($PRI_KEY=$form.find('input#PRIVATE_KEY')).length) $PRI_KEY.val(res.PRIVATE_KEY); 
       $form.append('<input type="hidden" id="PRIVATE_KEY" name="PRIVATE_KEY" value="'+res.PRIVATE_KEY+'" />'); 
       $form.find('input#do').val('BOOK_AD'); 
       $form.find('#reCaptchaO').remove(); 
       form.submit(); 
      } 
      else{ 
       alert(res.msg); 
       Recaptcha.reload(); 
       $form.find('.btn').removeClass('bdsbld'); 
       $('#'+res.fld).delay(250).focus(); 
      } 
     } 
     else 
     if(d!==''){ 
      alert(d); 
      Recaptcha.reload(); 
      $form.find('.btn').addClass('bdsbld'); 
     } 
     $form.find('.blkr').css('display', 'none'); 
    } 
}); 
在這段代碼

,行即

form.submit(); 

是重新提交的形式,但它不包括提交按鈕,它的價值,但提交按鈕被包含在ajax請求中...爲什麼?

+0

任何解決方法? 我希望表單可以通過所有字段和按鈕重新提交。 –

+0

您需要提交按鈕中包含的靜態值字段,這似乎完全沒有必要。看到我的答案可能的選擇。 – jondavidjohn

+0

嗯......它似乎你是正確的添加動態值... thx –

回答

2

這是因爲提交按鈕僅在單擊提交按鈕時才被包括在表單提交中。

因爲您沒有通過傳統的input="submit"按鈕提交表單,所以不包含任何值。

如果你在服務器端檢查這個值,它是一個靜態值,可以用一個靜態隱藏輸入輕鬆完成,似乎不是假的單擊提交按鈕的原因檢索一個靜態值。

<input type="hidden" value="info" name="field_name" id="field_name" /> 
6

如果提交按鈕用於提交表單,則只會將提交按鈕視爲successful控件。由於您使用JavaScript提交表單,因此您沒有使用提交按鈕,因此它不成功,並且未包含在提交的請求中。

1

您可以在form.submit()之前使用此方法 。用點擊功能調用提交按鈕。所以,它傳統上稱爲提交按鈕。

document.form name.submit button name.click();

+0

這也適用:'document.getElementById('submitButton')。click();' –