键入提交与类型按钮

时间:2010-09-03 02:40:33

标签: c# javascript jquery asp.net-mvc asp.net-mvc-2

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

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

4 个答案:

答案 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']变量。