2010-09-03 169 views
2

我有一个按钮,它现在被设置为类型“提交”。这将调用控制器,执行一些代码并返回到视图。当我使用jquery隐藏按钮时,我发现当我单击按钮时,隐藏了按钮,但只要返回视图,按钮不会再隐藏。然而,对于类型“按钮”,当我点击按钮时,这隐藏了按钮,但不执行控制器中的代码。有没有办法隐藏类型“提交”按钮,所以当视图返回时,按钮仍然隐藏?类型提交和类型按钮

$('#btnAdd').click(function() { 
      $('#btnAdd').hide(); 
     }); 
+3

似乎你正在返回一个网页作为表单提交的回应。不要这样做。使用PRG(http://en.wikipedia.org/wiki/Post/Redirect/Get)避免表单重新提交 – 2010-09-03 03:00:59

回答

2

<input type='submit'>创建一个按钮,将一个表单提交给服务器并触发您的服务器代码。如果您希望在页面返回时隐藏该按钮,则需要在页面中添加逻辑来完成此操作。你如何做到这一点将取决于你的服务器技术(php,.net等)。

<button>行为不同的原因是<button> s不提交表单(除非您添加更多代码以使它们做到这一点)...所以上述提到的东西永远不会发生。这不是一个<button>保持隐藏尽可能多的页面永远不会改变/重新加载。如果您将代码添加到<button>以使其刷新页面,它也会重新出现。

0

由于按下提交按钮后页面将被重新加载,该按钮将重新出现。一个快速和肮脏的得到你想要的是......

首先,创建一个隐藏字段

<input type="hidden" id="hidden" value="" /> 

然后,当你按下提交,在提交按钮,这样做click事件。 。

$('#submit').click(function() { 
    $('#hiddenField').val("1"); 
    $('#form').submit(); 
    return false; 
}); 
在你的控制器

现在,使用的hiddenField的价值一些变量传递给它可以这样使用的视图...

<?php if($hidden == "1"): ?> 
    <input type="submit" id="submit" value="Submit" /> 
<?php endif; ?> 

只要没有提交表单的按钮,它将不会提交表单,直到您自己在按钮的单击事件中提交表单。事情是这样的......

$('button').click(function() { 
    $('#form').submit(); 
}); 

当然,正如我所说,这是实现所需功能的快速和肮脏的方式,有更好的方法 - 使用AJAX,也可以实现根据什么服务器上更改你使用的语言(我在这里使用了PHP)。

+0

@ ShiVik - 你可以告诉我C#吗? – hersh 2010-09-03 12:55:06

2

显示按钮是因为该页面在提交表单后新显示。你的“旧”页面,点击并隐藏按钮是历史记录。

你想要什么?
按下一个按钮,做服务器端的东西,不改变当前的页
使用类型按键的按键,使用了Ajax调用服务器端。 或者使用类型为submit的按钮,并在服务器端执行Pablo所说的http://en.wikipedia.org/wiki/Post/Redirect/Get

按下一个按钮,做服务器端的东西,给用户反馈: 使用<form method="post"来标记你的表格。使用提交按钮来调用服务器端。在服务器上隐藏提交按钮,如果它被方法post调用(调用带链接的页面或将其输入到地址字段中,则使用method = get调用它)。

类型提交和类型按钮有什么区别? 一个提交按钮没有javascript的作品发送一些输入到服务器端。周围的表单被发送到服务器,并在浏览器中呈现响应。 一个按钮按钮需要一个javascript onclick处理函数,一个javascript函数。当用户按下按钮时,会调用onclick处理程序。

0

当您的表单被提交并且您的控制器处理数据时,如果符合某些条件,您可以在服务器端代码中设置临时会话变量或cookie。所以,基本上页面会在每次页面加载时检查这个变量。例如,在PHP:

if(empty($_SESSION['temp']['hideSubmitButton'])) { 
    $submitButton = '<button type="submit">Normal Button</button>'; 
} else { 
    $submitButton = '<button type="submit" disabled="disabled">Disabled Button</button>'; 
    // or $submitButton = ''; 
} 

但你必须决定何时取消设置()的$ _SESSION [ '临时']或$ _COOKIE [ '临时']变量。