1

我在我的网页上的一个按钮。它的代码是:

/* code of the other forms  */
<form method="get"  onsubmit="return validation()" > 
     <input type="submit" id="x" value="Search"  onmouseover="mover(this)" onmouseout="mout(this)" /> 
</form>

当我单击按钮时,应该验证其他表单的值并在同一选项卡上打开新网页。我对验证部分没有问题。问题是新网页在新选项卡中打开,这不是我想要的。到目前为止,代码是:

 function validation(){
    var x=document.forms["flyrics"]["lyrics"].value;
    if (x==null || x=="")
    {
        alert("Search without Lyrics?");
        return false;
    }

    var y=document.forms["fartist"]["artist"].value;
    if (y==null || y=="")
    {
        alert("Search without Artist Name?");
        return false;
    }

            window.open("songList.html", "_self");      
} 

最后一行是在同一选项卡上打开新页面的代码。但每次我点击按钮时都会打开一个新标签。我该如何纠正?我也尝试使用以下代码。但我不知道为什么他们都没有在同一个标​​签上打开新页面。

 location.href = "songList";
 window.location="songList.html";
 window.open("songList.html",  "currentWindow", "");

实际问题在哪里?需要帮助来修复它。我只需要使用 javascript 和 html 来执行此操作。

4

4 回答 4

1

我认为您想要实现的是在提交表单之前先验证搜索?您必须在表单选项卡中添加操作属性并移动return validation()提交按钮。

看看我下面的例子:

这将允许您songList.html在同一个选项卡上加载。

function validation() {
    var x=document.forms["flyrics"]["lyrics"].value;
    if (x==null || x=="")
    {
        alert("Search without Lyrics?");
        return false;
    }

    var y=document.forms["fartist"]["artist"].value;
    if (y==null || y=="")
    {
        alert("Search without Artist Name?");
        return false;
    }
} 
<!DOCTYPE html>
<body>
<form id="flyrics">
        <input type="text" id="lyrics" value="">
</form>
<form id="fartist">
        <input type="text" id="artist" value="">
</form>

/* code of the other forms  */
<form id="songList" action="songList.html">
        <input type="submit" id="x" value="Search" onclick="return validation()"/> 
</form>
</body>

于 2019-10-01T06:29:52.910 回答
0

尝试这个

window.location.replace("songList.html");

这对我来说很好!

于 2014-11-07T11:27:16.290 回答
0

如果你只是这样做

        window.open("songList.html");  
于 2013-07-03T19:12:30.090 回答
0

尝试使用window.location.assign

window.location.assign("songList.html");
于 2013-07-03T19:16:42.330 回答