когда я отправляю страницу перенаправления на основе поля выбора при отправке - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу перенаправить страницу после отправки на основе опции URL, я попробовал следующий код, он не работает, есть ли проблемы в этом коде ниже.

Пожалуйста, помогите мне в этом.

<div class="row">

<div class="wow fadeInLeft animated col-sm-12 col-md-12" data-wow-delay=".2s" data-wow-duration="1500ms">
<div class="san" style="padding:0px; ">

<div class="header-title">
<h3 style="text-align:center;"><strong>Donate Now </strong></h3>

<div class="hr hr-black"></div>
</div>
<br/> 
<form  id="comment-form1" name="contact-form1"  onsubmit="return mysubmit();">
<input type="text"  name="name" placeholder="Your Name.." required>
<input type="text"  name="email" placeholder="Your Email.."required>
<input type="text"  name="phone" placeholder="Your 10 digit Phone.."require pattern="[0-9]{10}">

<select  id="option" class="chosen" style="width:500px;">
<option selected disabled>Select Bank</option>
<option value="netbanking.hdfcbank.com/netbanking/?_ga=2.196148587.673827790.1549438128-1636006557.1549438128">Hdfc Bank</option>
<option value="www.icicibank.com/safe-online-banking/safe-online-banking.page?itm=nli_hp_0_btn_ib_loginbtn" >ICICI Bank</option>
<option value="netbanking.canarabank.in/entry/ENULogin.jsp" >Canara Bank</option>
</select>
<input name="submit" type="submit" value="Submit" /><br>
</form>
<br/><br/>
</div>
</div>

<script>
function mysubmit(){
  //you can return false; here to prevent the form being submitted
  //useful if you want to validate the form

  window.location.href='https://'+document.getElementById('option').value;
}
</script>

</div>
</div>
</section>

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Я удалил mysubmit() и создал событие отправки при помощи jQuery:

 $("#comment-form1").on("submit",function(event){
    event.preventDefault();
    window.location.href = 'https://' + document.getElementById('option').value;
 })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">

<div class="wow fadeInLeft animated col-sm-12 col-md-12" data-wow-delay=".2s" data-wow-duration="1500ms">
<div class="san" style="padding:0px; ">

<div class="header-title">
<h3 style="text-align:center;"><strong>Donate Now </strong></h3>

<div class="hr hr-black"></div>
</div>
<br/> 
<form  id="comment-form1" name="contact-form1">
<input type="text"  name="name" placeholder="Your Name.." required>
<input type="text"  name="email" placeholder="Your Email.."required>
<input type="text"  name="phone" placeholder="Your 10 digit Phone.."require pattern="[0-9]{10}">

<select  id="option" class="chosen" style="width:500px;">
<option selected disabled>Select Bank</option>
<option value="netbanking.hdfcbank.com/netbanking/?_ga=2.196148587.673827790.1549438128-1636006557.1549438128">Hdfc Bank</option>
<option value="www.icicibank.com/safe-online-banking/safe-online-banking.page?itm=nli_hp_0_btn_ib_loginbtn" >ICICI Bank</option>
<option value="netbanking.canarabank.in/entry/ENULogin.jsp" >Canara Bank</option>
</select>
<input name="submit" type="submit" value="Submit" /><br>
</form>
<br/><br/>
</div>
</div>

</div>
</div>
</section>
0 голосов
/ 06 февраля 2019

То, что вы просите, не может быть сделано.Когда форма отправляется, она по существу перенаправляет (используя get или post) на определенный URL действия.Если вы отмените перенаправление, то форма не будет отправлена, поскольку перенаправление - это то, что отправляет / запрашивает данные с сервера.

Есть два способа решения этой проблемы.

  1. Отмените отправку формы и вместо этого отправьте запрос ajax.После получения ответа вы можете перенаправить.

var form = document.querySelector("#myForm");
var redirectElement = document.querySelector("#selectRedirect");
form.addEventListener("submit", onSubmit);

function onSubmit(event) {
  $.ajax({
    url: form.action,
    context: JSON.stringify(new FormData(document.querySelector('form'))),
    method: form.method.toUpperCase()
  }).done(redirect);
  event.preventDefault();
  return false;
}

function redirect() {
  window.location.href = redirectElement.value;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="selectRedirect">
  <option selected disabled>Select URL</option>
  <option value="url_1">URL 1</option>
  <option value="url_2">URL 2</option>
  <option value="url_3">URL 3</option>
</select>
<form id="myForm" action="action_url" method="action_get_or_post">
  <input type="text" name="somedata" />
  <input type="submit" value="Submit" />
</form>
Сохраните URL-адрес в параметрах localStorage, cookie или url, а затем перенаправьте после перенаправления.Чтобы сделать это с помощью URL-параметров, просто добавьте имя, например redirectTo, к элементу select, а затем используйте этот скрипт.

if (document.readyState === "complete") onLoad();
else addEventListener("DOMContentLoaded", onLoad);

function onLoad() {
  var redirectTo = getUrlParameter("redirectTo");
  if (redirectTo) window.location.href = redirectTo;
}

function getUrlParameter(parameterName) {
  return (new RegExp(parameterName + "=([^&]+)", "i").exec(document.URL) || [])[1];
}
0 голосов
/ 06 февраля 2019

Вы можете использовать Event.preventDefault ()

document.getElementById('comment-form1').addEventListener('submit',(e)=>{
	e.preventDefault();
	window.location = ('https://'+document.getElementById('option').value);
})
<div class="row">

<div class="wow fadeInLeft animated col-sm-12 col-md-12" data-wow-delay=".2s" data-wow-duration="1500ms">
<div class="san" style="padding:0px; ">

<div class="header-title">
<h3 style="text-align:center;"><strong>Donate Now </strong></h3>

<div class="hr hr-black"></div>
</div>
<br/> 
<form id="comment-form1" name="contact-form1">
<input type="text"  name="name" placeholder="Your Name.." required>
<input type="text"  name="email" placeholder="Your Email.."required>
<input type="text"  name="phone" placeholder="Your 10 digit Phone.."require pattern="[0-9]{10}">

<select  id="option" class="chosen" style="width:500px;">
<option selected disabled>Select Bank</option>
<option value="netbanking.hdfcbank.com/netbanking/?_ga=2.196148587.673827790.1549438128-1636006557.1549438128">Hdfc Bank</option>
<option value="www.icicibank.com/safe-online-banking/safe-online-banking.page?itm=nli_hp_0_btn_ib_loginbtn" >ICICI Bank</option>
<option value="netbanking.canarabank.in/entry/ENULogin.jsp" >Canara Bank</option>
</select>
<input name="submit" type="submit" value="Submit"/><br>
</form>
<br/><br/>
</div>
</div>
0 голосов
/ 06 февраля 2019

Добавьте return false; в вашу функцию js, onsubmit по умолчанию получает значение true, которое фактически возвращает вас на ту же страницу.

<script>
function mysubmit(){
  window.location.href='https://'+document.getElementById('option').value;
  return false;
}
</script>

или вы можете изменить тип на кнопку и вызвать эту функциюпри нажатии кнопки

<input name="submit" type="button" value="Submit" onclick=' mysubmit()' /><br>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...