我有一个按钮,现在将其设置为“提交”类型。这会调用控制器,执行一些代码并返回视图。当我使用jquery来隐藏按钮时,我看到当我点击按钮时,我隐藏了按钮但是一旦返回视图,按钮就不再隐藏了。而对于“按钮”类型,当我单击按钮时,这会隐藏按钮但不执行控制器中的代码。有没有办法隐藏类型“提交”按钮,所以当视图返回时,按钮仍然隐藏?
$('#btnAdd').click(function() {
$('#btnAdd').hide();
});
答案 0 :(得分:2)
<input type='submit'>
创建一个按钮,将表单提交给服务器并触发服务器代码。如果您希望在页面返回时隐藏按钮,则需要向页面添加逻辑才能执行此操作。如何执行此操作取决于您的服务器技术(php,.net等)。
<button>
的行为不同的原因是<button>
不提交表单(除非您添加更多代码以使其执行此操作)...所以上面提到的东西永远不会发生。并非<button>
保持隐藏,因为页面永远不会更改/重新加载。如果您将代码添加到<button>
以使其刷新页面,那么它也会重新出现。
答案 1 :(得分:2)
显示按钮是因为在提交表单后新显示了该页面。点击并隐藏按钮的“旧”页面是历史记录。
你想要什么?
按一个按钮,在服务器端执行某些操作,不要更改当前页面:
使用按钮类型按钮,使用ajax调用服务器端。
或者使用提交类型的按钮,并在服务器端执行Pablo所说的http://en.wikipedia.org/wiki/Post/Redirect/Get。
按下按钮,在服务器端执行某些操作,提供用户反馈:
使用<form method="post"
标记表单。使用提交按钮调用服务器端。在服务器端隐藏提交按钮,如果它被方法发布调用(调用带链接的页面或在地址字段中输入它是用method = get调用它)。
类型提交和类型按钮有什么区别? 提交按钮无需javascript即可向服务器端发送一些输入。将周围的表单发送到服务器,并在浏览器中呈现响应。 按钮按钮需要一个javascript onclick处理程序,一个javascript函数。当用户按下按钮时,将调用onclick处理程序。
答案 2 :(得分:0)
由于在按下提交按钮后将重新加载页面,因此该按钮将重新出现。得到你想要的一个快速而肮脏的是......
首先,创建一个隐藏字段
<input type="hidden" id="hidden" value="" />
然后,当您按下提交时,在提交按钮的点击事件中,执行以下操作..
$('#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) )。
答案 3 :(得分: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 ['temp']或$ _COOKIE ['temp']变量。