如何修改代码使两个按钮分别打开不同的目标网页?
解决ASP.NET Razor视图中按钮onclick同名函数冲突问题
核心问题是同名JavaScript函数会被后面的定义覆盖,所以不管点击哪个按钮,都会执行最后定义的openWin函数。另外要注意:HTML规范不允许form标签嵌套,你原代码里外层已有一个form,里面又套了两个form,这会导致表单行为异常,需要一并修正。
下面提供两种可行的修改方案:
方案一:给函数定义不同名称
直接为两个函数设置不同的名称,按钮分别调用对应函数:
@{ ViewData["Title"] = "Login"; } <h1>@ViewData["Title"]</h1> <div class="container"> <form action="/action_page.php"> <div class="form-group"> <label for="email">Email:</label> <input type="email" class="form-control" id="email" placeholder="Enter email" name="email"> </div> <div class="form-group"> <label for="pwd">Password:</label> <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd"> </div> <div class="checkbox"> <label> <input type="checkbox" name="remember">Remember me </label> </div> <script> function openStocksPage() { window.open("https://localhost:7257/Home/Stocks"); } function openSignupPage() { window.open("https://localhost:7257/Home/Signup"); } </script> <!-- 移除嵌套的form标签,直接使用按钮 --> <button type="button" class="btn btn-primary" onclick="openStocksPage()"> Login </button> <button type="button" class="btn btn-primary" onclick="openSignupPage()"> Sign up </button> </form> </div>
方案二:使用带参数的通用函数
定义一个接受URL参数的通用函数,按钮调用时传入不同的目标地址,减少重复代码:
@{ ViewData["Title"] = "Login"; } <h1>@ViewData["Title"]</h1> <div class="container"> <form action="/action_page.php"> <div class="form-group"> <label for="email">Email:</label> <input type="email" class="form-control" id="email" placeholder="Enter email" name="email"> </div> <div class="form-group"> <label for="pwd">Password:</label> <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd"> </div> <div class="checkbox"> <label> <input type="checkbox" name="remember">Remember me </label> </div> <script> function openPage(url) { window.open(url); } </script> <button type="button" class="btn btn-primary" onclick="openPage('https://localhost:7257/Home/Stocks')"> Login </button> <button type="button" class="btn btn-primary" onclick="openPage('https://localhost:7257/Home/Signup')"> Sign up </button> </form> </div>
注意:将按钮type改为button可避免触发表单默认提交行为;如果需要保留表单提交逻辑,可以在onclick中先执行页面打开操作,再处理表单提交,或通过event.preventDefault()控制行为。
内容的提问来源于stack exchange,提问作者Melih Gumus
相关产品推荐
相关产品推荐

