2012-07-18 79 views
0

我在我的web应用程序中使用linkbuttons,我的'组合控件'没有使用ASP面板(因此没有'DefaultButton'属性,不是它会工作)。我的链接按钮目前有href设置为'javascript:_doPostBack ..'(asp默认),但为了启用我的自定义客户端验证脚本,我还有一个'onclick'属性的代码。作为默认按钮的LinkBut​​ton

典型按钮:

<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/

我真的很喜欢!?得到这个工作,而无需返工我的所有控件谁能帮

+0

感谢迄今为止的两个答案,只是说我已经在小提琴的不同阶段嵌入了一些“提醒”,我基本上需要它在所有提醒之前打开所有提醒,然后我才能够正常工作。如果'__doPostBack'中的消息总是无法访问,我想要一个很好的理由。感谢大家。 – Nnoel 2012-07-18 13:25:01

+0

我基本上试图设计一个解决方案,我可以在文本字段和作为按钮的'a'标记中添加一个属性(在这种情况下为'defaultB'),并使其自动充当ASP链接按钮已被鼠标点击(踢开href javascript和onclick事件代码) – Nnoel 2012-07-18 13:27:51

回答

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'似乎对我有用,但我想知道这样做是否有太大的安全风险?

0

我已经更新代码中看到:

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

什么我相信的你缺少的是:$(本)

我使用

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

然后 $( '一个[defaultB =' + $(e.srcElement).attr( 'defaultB')+“] “)。单击();

+0

谢谢你的回答。但是,这仍然没有正确执行“按钮点击”,而且您的更改没有意义,并且您的小提琴没有演示它正常工作,我想在几个地方向所有消息发送警报消息 – Nnoel 2012-07-18 13:18:20

0

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

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

您可能必须(根据从asp.net生成的HTML丑)上的默认按钮的选择工作,但我希望这有助于。

+0

谢谢您的回答。但是,这仍然没有正确执行“按钮点击”。因为这是ASP,所以我需要“做postbacl”(代码中的错字)消息出现,但不是,因此它仍然不起作用。而且,在表单上执行它并不合适,因为我需要编辑文本框中的'defaultB'中的值,以便我可以使用该'defaultB'值来查找相应的单击按钮。 – Nnoel 2012-07-18 13:20:19

+0

此外,将代码移出'onclick'变成$(id).click()对我的情况并不理想。 – Nnoel 2012-07-18 13:41:40