我正在寻找的是一种简单的方法,如果选择了默认条目,则可以使用包含一组选项的表单来提供警报,但是在新选项卡或窗口中正确打开正确的链接集。 / p>
创建onsubmit
事件时,为表单中的链接打开新窗口本身可以正常工作,但不能与警报一起使用。
这是问题所在。我有一个简单的选项选择从数据库中提取数据,onsubmit
它可以在新的选项卡或窗口中打开此链接。以下代码适用于所有存在的链接
<form method="get" name="dbs" onsubmit="window.open(link.value,'_blank');return false" >
<select name="link" class="required">'
<option value="blank" selected disabled="disabled">Select a specific database from the following:</option>
<?php
while($row = mysqli_fetch_array($rs)) {
echo '<option value="'.$row['url'] . '" >'. $row['source_name'] . '</option>';
}
echo '</select>';
?>
然而,问题在于第一个默认选定行。当然,它会在新窗口中显示404错误。
我一直在尝试运行一个函数,如果用户尝试提交第一个默认选项(&#34;选择特定的......等等#34;),它将发出警报。
这是我尝试过的。
我创建了这个函数来验证条目:
function checkSubmit() {
if (document.getElementsByName('link')[0].value == 'blank' ) {
alert('Please select a database'); return false
}
}
但是我很难让两个提交的人一起工作。我试过这个:
<form method="get" name="dbs" onsubmit="checkSubmit() && window.open(link.value,'_blank');return false" >
并且该功能正常,但当我选择合法的链接时,根本没有任何事情发生。
如果我将&&
更改为&
,||
或|
,则警报会有效,但点击“确定”后会显示 404 < / strong>,但合法链接有效。 这是我最接近的 ,但我希望警报只是停止表单,只有当第一个条目不时才会工作
我尝试将onsubmit移动到函数中,如下所示:
function checkSubmit() {
if (document.getElementsByName('link')[0].value == 'blank' ) {
alert('Please select a database'); return false
}
else {
window.open(link.value,'_blank');return false
}
}
并且警报再次正常工作,但else
根本不适用于合法链接:它只是刷新页面而根本没有任何操作。
我希望得到一些指示。如果有人选择第一个选项值,我会喜欢简单地发出警报,但其余部分则不然。我也不希望页面刷新(因此return false
行)。
答案 0 :(得分:1)
很简单,你只需要在函数内return true
。
function checkSubmit() {
if (document.getElementsByName('link')[0].value == 'blank' ) {
alert('Please select a database');
return false;
}
return true;
}
以前发生的事情是false
或undefined
被返回&&
的第一部分。因为两者都是假值,所以第二部分从未到达。