2011-09-12 53 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();' –