JavaScript - 对相同输入类型但名称不同的不同操作

时间:2017-05-30 10:19:01

标签: javascript input submit action

我的js脚本有问题,因为两个按钮都会打开相同的网站1.我不知道为什么?

有人可以帮我解决这个问题吗?



$('#trackAndTraceForm').submit(function(event) {
  var val = $('input[name="numer"]', this).val();
  elementClicked = $(event.target);
  var typeBtn = elementClicked.attr('name');

  if (typeBtn == 'spr') {


    if (val.substring(0, 1) != '0') {
      //console.log('nie zero');
      var action = 'http://92.43.115.24:8080/ApolloWebBooking/WebBooking/StatusyPrzesylki.aspx';
      $(this).attr('action', action);
    } else {
      var action = 'http://apollo.loxx.pl:8080/ApolloWebBooking/WebBooking/StatusyPrzesylki.aspx';
      $(this).attr('action', action);
    }
  } else if (typeBtn == 'pod') {
    var action = 'http://www.loxx.pl/loxx_it/loxxwarpod.php';
    $(this).attr('action', action);
  } else {
    //do nothing;
  }


});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="trackAndTraceForm" target="_blank" class="form-horizontal" enctype="application/x-www-form-urlencoded" method="get" action="http://apollo.loxx.pl:8080/ApolloWebBooking/WebBooking/StatusyPrzesylki.aspx">
  <span>Track and Trace:</span>
  <input type="text" value="" name="numer" placeholder="Numer listu przewozowego" />
  <input type="submit" name="spr" class="btn btn-sm btn-primary" value="Sprawdz" />
  <input type="submit" name="pod" class="btn btn-sm btn-primary" value="POD" />
</form>
&#13;
&#13;
&#13;

如果我单击POD按钮,则动作与Sprawdz的URL相同

http://apollo.loxx.pl:8080/ApolloWebBooking/WebBooking/StatusyPrzesylki.aspx?numer=0317037128&pod=POD

1 个答案:

答案 0 :(得分:0)

您需要阻止原始事件触发默认提交操作。您可以通过调用event.preventDefault();

来实现

这是您的代码需要的样子:

$('#trackAndTraceForm').submit(function(event) {
  event.preventDefault(); // <-- the important bit
  // ...

  if (typeBtn == 'spr') {
    // ...
  } else if (typeBtn == 'pod') {
    // ...
  }
});

<击>

在调用submit事件后,您似乎无法更改事件的action属性。

您需要做的是为每个按钮添加事件监听器,更改action属性,然后提交表单:

function changeFormAction(newAction) {
  $('#trackAndTraceForm').attr('action', newAction);
}
$('input[name="spr"]')
  .click(function(e) {
    e.preventDefault();
    var value = $('input[name="numer"]').val();
    var newAction = value.startsWith('0') ? 
      'http://apollo.loxx.pl:8080/ApolloWebBooking/WebBooking/StatusyPrzesylki.aspx' :     'http://92.43.115.24:8080/ApolloWebBooking/WebBooking/StatusyPrzesylki.aspx';

    changeFormAction(newAction);
    $('#trackAndTraceForm').submit();
}
$('input[name="pod"]')
  .click(function(e) {
    e.preventDefault();
    changeFormAction('http://www.loxx.pl/loxx_it/loxxwarpod.php');
    $('#trackAndTraceForm').submit();
}