我想使用<input type="submit">
按钮作为链接在当前选项卡中打开另一个网页。我正在使用属性multiple
,但我想显示选择菜单like this
这是我的HTML:
<form id="link">
<select multiple="multiple" >
<option value="" disabled selected hidden>Моля изберете</option>
<option value="volvo">Кардиолог</option>
<option value="gastro.html" target="_blank">Гастроентеролог</option>
<option value="mercedes">Ортопед</option>
<option value="audi">Дерматолог</option>
<option value="audi">Уролог</option>
</select >
<div class="btn">
<button class="SubmitButton" type="submit" name="SUBMITBUTTON" value="Submit" onsubmit="return validateForm();" >Търси</button>
</div>
</form>
这是我的Javascript和jQuery:
$('#link').on('submit', function (e) {
// e.preventDefault();
var $form = $(this),
$select = $form.find('select'),
links = $select.val();
if (links.length > 0) {
for (i in links) {
link = links[i];
window.open(link);
}
}
});
我如何重写代码,以便用户提交表单时,新网页在当前选项卡中打开,而不是在新窗口中打开?
您无法更改window.open
的行为。这是用户首选项和浏览上下文:https://developer.mozilla.org/en-US/docs/Web/API/Window/open
但是您可以更改代码。如果使用的是API,则无需打开新链接,只需单击fetch此链接并在某个位置显示结果即可。
但是由于它看起来不像API ...您可以使用一些AJAX技术来获取其内容并将其放在当前页面的元素中(但在2010年它看起来像是一个Web)。
尝试猜测您的问题,答案应该是:执行preventDefault,然后禁用提交按钮。现在,您可以打开“标签”。这样,用户只能提交一次,而不能打开新页面
在Java语言中,您使用window.open(link)
打开了链接。但是,此Javascript函数会在新窗口中打开URL。您希望URL在当前选项卡中打开,而不是在新窗口或新选项卡中打开。
在代码中替换此行:
window.open(link);
用此行:
window.location.href = link;
此Javascript函数可刺激点击链接。
或者只是用我的代码片段中的Java语言替换您的Java语言。我还用首选方法.on(‘submit’, function(e) {…});
更改了已过时的.submit(function(e) {…});
函数。
<form id="link">
<select multiple="multiple" >
<option value="" disabled selected hidden>Моля изберете</option>
<option value="volvo">Кардиолог</option>
<option value="gastro.html" target="_blank">Гастроентеролог</option>
<option value="mercedes">Ортопед</option>
<option value="audi">Дерматолог</option>
<option value="audi">Уролог</option>
</select >
<div class="btn">
<button class="SubmitButton" type="submit" name="SUBMITBUTTON" value="Submit" onsubmit="return validateForm();" >Търси</button>
</div>
</form>
$('#link').on('submit', function (e) {
// e.preventDefault();
var $form = $(this),
$select = $form.find('select'),
links = $select.val();
if (links.length > 0) {
for (i in links) {
link = links[i];
window.open(link);
}
}
});