2014-04-16 20 views
0

我有以下的javascript函數形式INOUT提交按鈕後得到附加

txJ$(document).ready(function() { 

    // Hide the error display, as there is currently no error 
    txJ$("#TokenProxy_Error").css('display', 'none'); 

    //txJ$(".submit").closest("form").submit(function (e) { 
    txJ$(".submit").closest("form").submit(function (event) { 
     //check for encryption key 
     { TxEncrypt(event); } 
    }); 
}); 
function TxEncrypt(event) 
{ //perform encryption of token data, then submit the form like normal 

    //obtain public key and initial JSEncrypt object 
    var txPubKey = 'jjh'; 
    var txEncrypter = new JSEncrypt(); 
    txEncrypter.setPublicKey(txPubKey); 

    //get Data and encrypt it 
    var txData = '{}'; 
    var txCryptData = ''; 
    if(txJ$(".data").length > 1) 
    { //if there are more than one element with this class, convert it to json string 
     txData = txJ$(".data").serializeObject(); 
     txCryptData = txEncrypter.encrypt(JSON.stringify(txData)); 
    } 
    else 
    { //else, just encrypt the value 
     txData = txJ$(".data").val(); 
     txCryptData = txEncrypter.encrypt(txData); 
    } 


    dataString = txCryptData; 
    var xhr = new XMLHttpRequest(); 
    var params=dataString; 
    var token; 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status==200) { 
    token=xhr.responseText; 
    alert(token); 
    //add value/field to form 
    txCvv = txJ$(".cvv").val(); 

    var MyForm = txJ$(".zwitch_submit").closest("form"); 

     txJ$('<input type="hidden">').attr({ 
       id: 'token', 
       name: 'token' 
      }).val(token).appendTo(MyForm); 
     txJ$('<input type="hidden">').attr({ 
       id: 'cvv', 
       name: 'cvv' 
      }).val(txCvv).appendTo(MyForm); 

    //scrub data that we do not want to post 
    txJ$(".data").removeAttr('name'); 
    txJ$(".cvv").removeAttr('name'); 
     } 
    } 
    xhr.open('POST', 'tokenize.php', false); 
    xhr.send(params); 

HTML表單是

<form method="POST" action="pp.php"> 

<input type="text" class="data" name="ccnumber" value="4048341128241910" /> 
<input type="text" class="cvv" name="cvv" /> 



<input type="submit" class="submit" value="tokenize" /> 

</form> 

在腳本運行時,即時得到的形式

<form method="POST" action="pp.php"> 

<input type="text" class="data" name="ccnumber" value="4048341128241910" /> 
<input type="text" class="cvv" name="cvv" /> 



<input type="submit" class="submit" value="tokenize" /> 
<input type="hidden" name="card_token" /> 

</form> 

使用javascript附加的字段<input type="hidden" name="card_token" />出現在提交按鈕之後,因此該字段爲n沒有得到提交。

如何在提交按鈕之前追加此字段,有什麼幫助?

+0

在此期間你需要添加隱藏的輸入? – Madurai

+0

@Madurai更新了問題,請參閱它。它提交的事件 – Piya

+0

@PiyaSharma:誰告訴你,如果任何輸入字段附加後提交按鈕,那麼該字段沒有提交。最主要的是:字段必須在**「

」**標記中,並且位置根本無關緊要。 –

回答

0

你爲什麼不嘗試這樣的事情。在您的形式

div一些id好比說<div id="div1"></div>和您的JavaScript應像

var MyForm = txJ$("#div1"); 

     txJ$('<input type="hidden">').attr({ 
      id: 'token', 
      name: 'token' 
     }).val(token).appendTo(MyForm); 
    txJ$('<input type="hidden">').attr({ 
      id: 'cvv', 
      name: 'cvv' 
     }).val(txCvv).appendTo(MyForm); 

讓我知道你是否面臨任何其他問題。 ..

-1

您可以使用jQuery 前置功能:

$("input[type='submit']").prepend('<input type="hidden" id="token" name="token" value="'+ token + '">'); 
$("input[type='submit']").prepend('<input type="hidden" id="cvv" name="cvv" value="'+ txCvv + '">'); 
+0

我有一個響應表單提交事件的函數 – Piya