2017-01-12 4 views
0

にない変数をVALUES:フォームAPPENDちょうど私がこのように、単に値をURLに追加してフォームを送信する必要があるURL

http://thisistheurl.com/serv#search/VALUE1/VALUE2/VALUE3/VALUE4

私はこのように送信することができます:

http://thisistheurl.com/serv変数1 =値 & 変数2 =値 & variable3は=値 & 変数4 =値#検索/

形態は非常に簡単です。

<form id="consultatickets" name="consultatickets" role="form" method="get" class="tickets-form" action="http://thisistheurl.com/serv#search/" target="_blank"> 

<div class="row"> 
    <div class="form-group col-md-12 col-sm-12"> 
     <label for="ciudadorigen" class="tickets-imputs">Ciudad de Origen</label> 
     <select name="ciudadorigen" class="form-control ciudadorigen tickets-imputs" for="ciudadorigen"> 
      <option selected disabled>1</option> 
      <option value="562">2</option> 
      <option value="582">3</option> 
     </select>     
    </div> 
</div> 

<!-- Here goes the rest of the form --> 

<a type="submit" class="btn btn-warning waves-effect btn-block" href="javascript:{}" onclick="document.getElementById('consultatickets').submit();">Buscar <i class="fa fa-search" aria-hidden="true"></i></a> 
</div> 

私は変数から値だけを抽出し、URLに追加する方法がわかりません。

+0

あなたが参照しているかの変数あなたの例からも明らかではありません。データをキャプチャしてURLに再マップする場合は、HTMLフォームのデフォルト機能を使用せずにこれを行う必要があります。これまでに何を試しましたか? – Twisty

+0

変数は** INPUT **または** SELECT **の名前です。 HTMLフォームは常に次のように追加されます:?inputname = inputvalue&...。私は値を必要とする。 –

答えて

1

注文が問題でない場合は、フォームの値をシリアル化し、フォームのアクション属性に追加して最終的なURLを作成します。

<form id="consultatickets" name="consultatickets" role="form" method="get" class="tickets-form" action="http://thisistheurl.com/serv#search" target="_blank"> 

<div class="row"> 
    <div class="form-group col-md-12 col-sm-12"> 
     <label for="ciudadorigen" class="tickets-imputs">Ciudad de Origen</label> 
     <select name="ciudadorigen" class="form-control ciudadorigen tickets-imputs" for="ciudadorigen"> 
      <option selected disabled>1</option> 
      <option value="562">2</option> 
      <option value="582">3</option> 
     </select> 
     <label for="campo_adicional">Campo adicional</label> 
     <input id="campo_adicional" type="text" name="campo_adicional" /> 
    </div> 
</div> 
<input type="submit" value="search"/> 
</form> 

$("#consultatickets").on('submit', 
function(e) { 
    e.preventDefault(); 
    var values = $(this).serializeArray(); 
    var baseUrl = $(this).prop("action"); 
    $.each(values, function(i, v) { 
    baseUrl += "/" + encodeURIComponent(v.value); 
    }); 
    alert(baseUrl); 
} 
); 

https://jsfiddle.net/kb3rvLjs/

+0

はい、注文事項です。このオプションを試してみます。ありがとう –

+0

これはあなたのために働く場合は教えてください。 –

+0

なぜか分かりませんが、動作しません。フィドルはうまくいきます、私はそこからコピーしますが、何もコピーしません。私は自分のやり方を変える。ありがとうございました。 –

0

テストされていないと私は私が正しくあなたの質問を得たかはわからないが、あなたがこのような何かを探しているようだ:あなたはフォームをトリガーにしたい場合は

// your form submit event handler 
function formSubmit() { 
    var form = $('#consultatickets'); 
    // build your url 
    var url = 'http://thisistheurl.com/serv#search/' + 
     getValues(form).join('/'); 

    // redirect to your new location 
    location.href = url; 
}; 

// function to get the values from the form elements 
function getValues(form) { 
    // get all form fields in the form 
    var fields = $("input, select", form); 
    var values = []; 
    // loop over the fields, add them to array 
    jQuery.each(fields, function(field) { 
     values.push(encodeURI(field.val())); 
    }); 
    return values; 
} 

は単に変更、タグで提出しますあなたのonclick属性はonclick ="formSubmit();"です。

+0

私は試してみるつもりですが、あなたは正しい道にいると思います。 –

+0

関数の呼び出し方法がわかりません。フォームアクションでは、** action = "getValues();" **とsubmit ** onclick = "document.getElementById( 'consultatickets')。submit();" **を入れても動作しません。 –

+0

@ Estudio3551いいえ - それは間違っています。私は自分の答えを更新しました - あなたはjQueryを使用していますか?インラインonclickの概念は、一般的なjQueryの方法ではなく、document.getElementByIdのどちらでもありません。とにかく、フォームのアクションとしてjavascriptメソッドを使用することはできません。 –

関連する問題