0

Web アプリケーションでリンクボタンを使用していますが、「複合コントロール」は ASP パネルを使用していません (したがって、「DefaultButton」プロパティはなく、機能しません)。私のリンク ボタンには現在、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」(入力) で「クリック」イベントが開始されます。しかし、何も起こっていません:(

役立つようにjsfiddleを作成しましたが、愚かな「機能が見つかりません」という例外で機能しません。:(

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

すべてのコントロールを作り直すことなく、これを機能させたいと思います! 誰でも助けることができますか?

4

3 に答える 3

0

問題は、keypressイベントを入力ボタンにバインドすることです。したがって、ユーザーがボタンを押してからEnterキーを押すと、イベントがトリガーされます。フォームにバインドする必要があります!

コードを更新しました: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 に答える
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 に答える