2010-03-02 186 views
5

我正在处理一个脚本,我希望它所做的(现在)是基于他们按哪个按钮来重定向用户。最终它将采用表单输入并将其合并到重定向中,但现在我只是试图让按钮将用户发送到适当的站点。但是,我的重定向不起作用。页面重定向

<html> 
<head> 
<title> 
Home 
</title> 
</head> 

<body> 

<script type="text/javascript"> 
<!-- 

var textstring; 
var btnWhichButton; 

//Gets the text from the form 
function getQ() { 
    textstring = document.forms['Search'].elements[0].value; 
} 

//Does a Google Search 
function googleSearch() { 
    window.location ="http://www.google.com"; 
} 

//Does a YouTube Search 
function youtubeSearch() { 
    window.location = "http://youtube.com"; 
} 

//Figure out which button was pressed 
function whichButton() { 
    if (btnWhichButton.value == 'Google Search') { 
     googleSearch(); 
    } else if (btnWhichButton.value == 'YouTube Search'){ 
     youtubeSearch(); 
    } 
} 

//main function to run everything 
function main() { 
    getQ(); 
    whichButton(); 
} 
// --> 
</script> 


<form name="Search" > 

<input type="text" name="q" size="31" maxlength="255" value="" /> 
<input type="submit" value="Google Search" onclick="btnWhichButton=this; main();" /> 
<input type="submit" value="YouTube Search" onclick="btnWhichButton=this; main();" /> 

</form> 
</body> 

</html> 

当按下其中一个按钮,页面只是用] Q =重新加载附加到URL,它不重定向。任何帮助?

+1

两件事情,真正提高了我的JS: 1.使用Firebug调试代码 2.使用jQuery实现更努力了相同的结果,并享受浏览器兼容的免费 – DanJ 2010-03-02 07:12:43

+0

附注:如果我更换带警报的window.location('');这样可行。所以我知道onclick动作正在执行。另外,有趣的是,如果我用警报包围重定向,则重定向起作用。 – hodgesmr 2010-03-02 07:16:52

+0

@DanJ不能同意你更多... – 2010-03-02 07:19:11

回答

1

要使用button而不是input type='submit'。您当前的按钮正在提交表单,而不是执行其onclick操作。

或以某种方式阻止提交操作。或者你可以使用你的函数将表单动作设置为url并让它提交。

+0

谢谢。这回答了我的问题。 – hodgesmr 2010-03-02 07:28:24

0

您的脚本看起来过于复杂。为什么不能有三个功能:getQ,googleSearchyouTubeSearch?然后在onClick事件中,您可以调用确切的功能,包括输入参数中的this.value,并从该函数内部调用getQ?你的方法似乎效率很低。如果你打算为他们每个人分别设置不同的功能,那么通过其他两种功能来获得它们是没有用的。

提交按钮会始终提交表单没有return false在onClick事件的结束,因为默认发布方法是GET,它连接?q=到您的网址的结尾,因为那场是空白,它是唯一的输入字段的形式。

0

要重定向到新页面,您不需要使用大javascript功能。

<html> <body> 
    <input type="button" value="Google Search" onclick="javascript:window.location.href='http://www.google.com'" /> 
    <input type="button" value="You tube Search" onclick="javascript:window.location.href='http://youtube.com'" /> 
</body></html> 

请检查是否有帮助。

0

就像贾森巴说的那样,把你的输入改为“按钮”而不是“提交”。此外,我宁愿使用window.location.href而不是window.location而已。我不知道这是否是一个好习惯......开心编程。