2017-11-22 2 views
0

urlを使用して別のページに値を渡そうとしました。私は最初にいくつかのステップからいくつかの情報を取得する必要があるので、HTMLでインラインでハードコードすることはできません。だから私はそれが提出される前にフォームでアクションを変更する必要があります。Jquery、サブフォームがそのパラメータを変更し続ける

これは、フォーム

<form id="addActForm" class="w3-container formInput" method="GET" action=""> 
    <p> 
     <input class="w3-radio" type="radio" name="typeAct" value="1"> 
     <i class="fa fa-file-text-o"></i> <label>Assignment</label></p> 
    <p> 
     <input class="w3-radio" type="radio" name="typeAct" value="2" > 
     <i class="fa fa-file-o"></i> <label>File</label></p> 
    <input id="btnSubmit" type="button" class="w3-btn w3-black" value="Add"> 
</form> 

であり、これは私が提出し、コンソールを参照してくださいを削除した場合、それはすでに私が欲しいものを私に与えて行動

$('#btnSubmit').click(function(){ 
    var action = PATH + "code=" + code + "&topic=" + topic + "&type=" + type; 
    console.log(action); 
    $('#addActForm').attr('action', action); 
    $('#addActForm').submit(); 
}); 

を処理するスクリプトで、例えば、

addingActivity.php?コード= AIF315 &トピック= 1つの&タイプ= 2

私はコンソールから手動でフォームアクションをチェックしても正しい値を持っています。しかし、私は提出しようとすると、それは

addingActivity.php代わりに、私は、このを与える?typeAct = 2

は、なぜそれが戻って変化していますか?なにが問題ですか?

感謝:)

+0

コードはどこにありますか?トピック、およびタイプ変数から来ていますか?それらが定義されているのを見ないでください。 –

答えて

0

問題は、あなたが得るとしてフォームを送信するとき、それは(あなたの入力から)フォームの値をエンコードし、要求のURLでそれらを置くことです。したがって、フォームが生成するものはすべてあなたのパラメータに置き換えられます。あなたは

代わり形でname="typeAct"で入力を持っているので、あなたがtypeAct=2を取得する理由はここにあり、ちょうどベースパスになると、あなたが

<form id="addActForm" class="w3-container formInput" method="GET" action="<YOUR_BASE_URL>"> 
    <p> 
     <input class="w3-radio" type="radio" name="type" value="1"> 
     <i class="fa fa-file-text-o"></i> <label>Assignment</label></p> 
    <p> 
     <input class="w3-radio" type="radio" name="type" value="2" > 
     <i class="fa fa-file-o"></i> <label>File</label></p> 

    <input type="hidden" class="code" name="code" value="AIF315" /> 
    <input type="hidden" class="topic" name="topic" value="1" /> 

    <input id="btnSubmit" type="button" class="w3-btn w3-black" value="Add"> 
</form> 

は、それからちょうど設定したいものを生成するために、隠しフィールドを使用する必要がありますあなたの行動提出前にJSと彼らとブラウザがあなた

$('#btnSubmit').click(function(){ 
    $("input.code").val(code); 
    $("input.topic").val(topic); 
    $('#addActForm').submit(); 
}); 
0

なぜあなたはそのような何かをしようとしていないため、URLエンコードをやらせる:

var element = YOUR FORM ELEMENT; 

var topic= document.createElement("input"); 
    code.setAttribute("type","hidden"); 
    code.setAttribute("topic",topic); 
    element.form.appendChild(topic); 


var code = document.createElement("input"); 
    code.setAttribute("type","hidden"); 
    code.setAttribute("code",code); 
    element.form.appendChild(code); 


var type= document.createElement("input"); 
    code.setAttribute("type","hidden"); 
    code.setAttribute("type",type); 
    element.form.appendChild(type); 

element.form.action = PATH ; 
element.form.submit(); 
関連する問題