jQuery替换默认按钮或链接

时间:2009-06-30 16:07:13

标签: asp.net jquery asp.net-2.0

众所周知,默认按钮在FF中不起作用,只有IE。我试图放入标签或在其中,它不起作用。我找到了一个js脚本来解决这个问题,但由于某些原因它不适合我。这个提交按钮的脚本,我需要将它用于LinkBut​​ton,它应该是相同的。

链接:

  <div id="pnl">
    <a id="ctl00_cphMain_lbLogin" title="Click Here to LogIn" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$lbLogin&quot;, &quot;&quot;, true, &quot;Login1&quot;, &quot;&quot;, false, true))">Log In</a>
    <input name="ctl00$cphMain$UserName" type="text" id="ctl00_cphMain_UserName" />
    <input name="ctl00$cphMain$UserName" type="text" id="ctl00_cphMain_UserName1" />
  </div>

<script>

 $(document).ready(function() {
    $("#pnl").keypress(function(e) {
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            $("a[id$='_lbLogin']").click();
            return true;
        }
    });
});

我知道我可以覆盖原始功能“ WebForm_FireDefaultButton ” 在This帖子中,但我真的想让这个工作。

Thanx提前!!!

3 个答案:

答案 0 :(得分:2)

我在这里找到了修复链接按钮的答案:http://www.sentia.com.au/2009/03/fixing-the-enter-key-in-aspnet-with-jquery/

$(document).ready(function(){
  var $btn = $('.form_submit');
  var $form = $btn.parents('.form');

  $form.keypress(function(e){
      if (e.which == 13 && e.target.type != 'textarea') {
          if ($btn[0].type == 'submit')
              $btn[0].click();
          else
              eval($btn[0].href);
          return false;
      }
  });
});

答案 1 :(得分:1)

受到Larry Flewwelling's answerMichael Cindric's的启发,我想出了该javascript代码段的修改和更新版本。我已在this blog post中记录了有关原因和方式的更详细信息,但让我总结一下重要的变化:

  1. 使用动态加载的内容
  2. 在同一页面上使用任意数量的“表格”
  3. 这就是:

    $('body')
      .off('keypress.enter')
      .on('keypress.enter', function (e) {
        if (e.which == 13 && e.target.type != 'textarea') {
          var $btn = $(e.target).closest('.jq-form').find('.jq-form-submit');
          if ($btn.length > 0) {
            if ($btn[0].type == 'submit') {
              $btn[0].click();
            }
            else {
              eval($btn[0].href);
            }
            return false;
          }
        }
      });
    

答案 2 :(得分:0)

您可以展开您的选择器。

$("#pnl > input")

然后,它将捕获面板中所有控件的输入点击。