0

我在我的网络应用程序中使用链接按钮,我的“复合控件”没有使用 ASP 面板(因此没有“默认按钮”属性,不是说它会起作用)。我的链接按钮当前的 href 设置为 'javascript:_doPostBack..'(asp 默认),但是为了启用我的自定义客户端验证脚本,我还在 'onclick' 属性中有代码。

典型按钮:

<div class="button orange o_lime right Normal">
    <a onclick="if (!validateFormmainContent_Login()) return false;" 
        id="mainContent_Login_ctl09_mainContent_Login_btnSubmit" defaultB="loginForm" 
        href="javascript:__doPostBack(&#39;ctl00$mainContent$Login$ctl09$mainContent_Login_btnSubmit&#39;,&#39;&#39;)">
        Submit
    </a>
</div>

需要“默认按钮”操作的典型表单行

<div class='row' ID='mainContent_Login_ctl03'>
    <label ID='mainContent_Login_ctl04'>Email/Username</label>
    <input name="ctl00$mainContent$Login$txtAccount" type="text" id="mainContent_Login_txtAccount" class="lime validate[required]" defaultB="loginForm" />
</div>  

我目前的代码尝试使这项工作:

<script type="javascript">  
$('input[defaultB]').keypress(function (e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {     
        $('a[defaultB=' + $(e.srcElement).attr('defaultB') + ']').click();
        return false;
    } else {
        return true;
    }
});

我当前尝试的解决方案为“defaultB”分配了一个值,该值与相应按钮中定义的“defaultB”值匹配,这样按键“13”(回车)应该启动“click”事件。但什么也没发生:(

我创建了一个 jsfiddle 来提供帮助,但它不适用于愚蠢的“找不到函数”异常。:(

http://jsfiddle.net/Ninjanoel/yQvKC/

我真的很想让这个工作而不必重新设计我的所有控件!任何人都可以帮忙吗?

4

3 回答 3

0

我已经更新了代码,请参见:

http://jsfiddle.net/yQvKC/5/

我相信你缺少的是:$(this)

我用

  $('a[defaultB=' + $(this).attr('defaultB') + ']').click();

然后 $('a[defaultB=' + $(e.srcElement).attr('defaultB') + ']').click();

于 2012-07-18T11:27:42.983 回答
0

问题是,您将按键事件绑定到输入按钮。所以如果用户按下按钮然后按下回车,就会触发该事件。您应该将其绑定到表单!

我已经更新了代码:http: //jsfiddle.net/YN56H/2/

您可能需要选择默认按钮(根据从 asp.net 生成的丑陋的 html),但我希望这会有所帮助。

于 2012-07-18T11:42:59.057 回答
0
$('input[defaultB]').keypress(function (e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {  
         alert('enter pressed');    
        var _el = $('a[defaultB='+ $(e.srcElement).attr('defaultB') + ']');
        eval(_el.attr('onclick'));
        eval(_el.attr('href'));
        return false;
    } else {
        return true;
    }
});

http://jsfiddle.net/Ninjanoel/5WDKT/1/

在这种情况下我使用“eval”是否危险?在属性上使用“eval”似乎对我有用,但我想知道这样做是否存在太大的安全风险?

于 2012-07-18T13:53:41.027 回答