Jquery获取iD和Value并显示URL参数

时间:2016-10-24 09:50:58

标签: javascript jquery

我在HTML& JS脚本,用于获取表单中每个元素的ID和值。

但是,我需要获得所有这些价值,如下所示,并在用户提交表单以重定向预订引擎时添加到顶部的URL。

在console.log上获得以下输出:

someaction fromLocation =未定义&安培; departureDate =未定义&安培; TRIPTYPE =未定义&安培; returnDate =未定义

HTML:

  <form method="POST" id="bookingForm" action="someaction">
<div class="col-lg-6">
  <div class="form-group">
    <label for="fromLocation">From:</label>
    <select class="select form-control input-lg" id="fromLocation" form="fromLocation" name="fromLocation" required>
      <option value="">From</option>
      <option value="ADL">Adelaide</option>
      <option value="DRW">Darwin</option>
      <option value="MEL">Melbourne</option>
      <option value="PER">Perth</option>
    </select>
  </div>
  <div class="form-group">
    <label for="departure">Departure Date:</label>
    <input class="departureDate form-control" id="departureDate" type="text" placeholder="Departure Date" name="Departure Date" required>
  </div>
  <div class="form-group" id="tripType">
    <label for="tripType">Trip Type:</label>
    <div class="col-lg-12">
      <div class="col-lg-2">
        <input class="radio tripType" id="ReturnTrip" type="radio" name="tripType" value="Return" checked="">Return
      </div>
      <div class="col-lg-2">
        <input class="radio tripType" id="SingleTrip" type="radio" name="tripType" value="One-way">One-way
      </div>
      <div class="col-lg-8"></div>
    </div>
  </div>
</div>
<div class="col-lg-6">
  <div class="form-group">
    <label for="return">Return Date:</label>
    <input class="returnDate form-control" type="text" id="returnDate" placeholder="Return Date" name="Return Date" required>
  </div>
  <div class="form-group" id="booking-btn--container">
    <button class="btn btn-primary" type="submit">Submit</button>
  </div>
</div>
</form>

JS:

var url = $("#bookingForm").attr("action") + "?";
var urlElements = [];
$("#bookingForm").find('.form-group').each(function(){
urlElements.push($(this).find('.form-control').attr("id") + "=" + $(this).find('.form-control').attr("value") || $(this).find('.form-control').attr("id") + "=" + $(this).find('.form-control').attr("value"));
});
urlElements = urlElements.join("&");
url += urlElements;
console.log(url);

2 个答案:

答案 0 :(得分:3)

只需修改您的姓名属性以匹配您的ID,然后使用.serialize()

$("form").on("submit", function(event) {
  event.preventDefault();

  var form = $(this);
  var url = form.attr('action') + '?' + form.serialize();
  
  console.log(url);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" id="bookingForm" action="someaction">
  <div class="col-lg-6">
    <div class="form-group">
      <label for="fromLocation">From:</label>
      <select class="select form-control input-lg" id="fromLocation" name="fromLocation" required>
        <option value="">From</option>
        <option value="ADL">Adelaide</option>
        <option value="DRW">Darwin</option>
        <option value="MEL">Melbourne</option>
        <option value="PER">Perth</option>
      </select>
    </div>
    <div class="form-group">
      <label for="departure">Departure Date:</label>
      <input class="departureDate form-control" id="departureDate" type="text" placeholder="Departure Date" name="departureDate" required>
    </div>
    <div class="form-group" id="tripType">
      <label for="tripType">Trip Type:</label>
      <div class="col-lg-12">
        <div class="col-lg-2">
          <input class="radio tripType" id="ReturnTrip" type="radio" name="tripType" value="Return" checked="">Return
        </div>
        <div class="col-lg-2">
          <input class="radio tripType" id="SingleTrip" type="radio" name="tripType" value="One-way">One-way
        </div>
        <div class="col-lg-8"></div>
      </div>
    </div>
  </div>
  <div class="col-lg-6">
    <div class="form-group">
      <label for="return">Return Date:</label>
      <input class="returnDate form-control" type="text" id="returnDate" placeholder="Return Date" name="returnDate" required>
    </div>
    <div class="form-group" id="booking-btn--container">
      <button class="btn btn-primary" type="submit">Submit</button>
    </div>
  </div>
</form>

作为奖励,它会对您的值进行正确的URL编码。

答案 1 :(得分:2)

试试这个

var $input = $(this).find('.form-control');
urlElements.push($input.attr("id") + "=" + $input.val());