在锚链接中动态更改值

时间:2017-10-09 07:03:14

标签: javascript jquery html

我希望动态更改price和id的值,并在下面的锚链接中选择不同的下拉菜单。比如如果我选择3天,则锚点中的价格会变为24,而新的oID会更改为ID。

注意:隐藏字段用于在数据库中提交数据。 $_post['deadline']。是的,纠正网址。输入错误。

<a class="btn btn-warning" href="https://example.com?price=38&id=DS123">order</a>

HTML

<div class="col-sm-6">
 <label for="price" class="control-lable">Urgency*:</label>
 <select class="form-control" name="price" id="price" onchange="func()" required>
    <option  value="">Select urgency</option>
    <option  value="24">3 Days</option>
    <option  value="38">5 Days</option>
    <option  value="62">7 Days</option>
 </select>
</div>

<input type="hidden" name="deadline" id="deadline" value="" />
<input type="hidden" name="oid" id="oid" value="" />

的Javascript

function func() {
var option = $("#price").val();
var dLine = $('#deadline').val();
var mID = new Date().getTime();
var oID = 'Q'+Math.round(mID/1000)

if (option =='24') {
  dLine = 3 Days;
  oID;
}

if (option =='38') {
  dLine = 5 Days;
  oID;
}

if (option =='62') {
  dLine = 7 Days;
  oID;     
  }
};

4 个答案:

答案 0 :(得分:2)

你在HTML中有不必要的隐藏字段以及jQuery中不必要的if条件(因为我无法在你的场景中看到和富有成效地使用它们)

如下所示: -

function func() {
  var option = $("#price").val();
  var mID = new Date().getTime();
  var oID = 'Q'+Math.round(mID/1000)
  $('.btn-warning').attr('href',"https://example.com?price="+option+"&id="+oID)
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-sm-6">
 <label for="price" class="control-lable">Urgency*:</label>
 <select class="form-control" name="price" id="price" onchange="func()" required>
    <option  value="">Select urgency</option>
    <option  value="24">3 Days</option>
    <option  value="38">5 Days</option>
    <option  value="62">7 Days</option>
 </select>
</div>

<a class="btn btn-warning" href="https://example.com?price=38&id=DS123">order</a>

<!-- not required <input type="hidden" name="deadline" id="deadline" value="" />
<input type="hidden" name="oid" id="oid" value="" />-->

注意: -

网址: - https://example.com&price=38&id=DS123似乎不正确,因为它需要https://example.com?price=38&id=DS123(检查查询字符串表示法?

答案 1 :(得分:1)

您可以在锚中放置一个ID,如: <a id="btn-order" class="btn btn-warning" href="#">order</a> 然后在你的onchange函数(func)中,执行以下操作: $('#btn-order').attr('href', 'https://example.com?price=' + option + '&id=' + oID);

答案 2 :(得分:0)

而不是使用onchange = func(),你可以尝试使用jquery .on()来保持它的清洁:

    $('#price').on('change', function(e){
         var $thisSelect = $(this),
             $anchor = $('.btn.btn-warning'),
             oID = 'Q'+Math.round((new Date().getTime())/1000),
             newhref = 'https://example.com/?id='+oID+'&price='+$thisSelect.val(),
             selectedText = $thisSelect.find('option:selected').text();

         $anchor.prop('href', newhref);

         $('#deadline').val(selectedText);
         $('#oid').val(oID);
   });

答案 3 :(得分:0)

Vanilla js版本:

function func () {
   var e = document.getElementById("price");
   var price = e.options[e.selectedIndex].value;
   var button = document.getElementsByClassName('btn btn-warning')[0];

   if (price && button) {
      var mID = new Date().getTime();
      var oID = 'Q'+Math.round(mID/1000);
      button.setAttribute('href', "https://example.com?price=" + price + "&id=" + oID)
   }
}