0

Web ページに次のコードがあります。入力フィールドをクリックし、提供されたテンキーを使用して値を追加する必要があります。スクリプトを使用して、フォーカスが来ると入力からデフォルト値をクリアしますが、要素をクリックするとフォーカスが入力からクリックされたものになるため、テンキーをクリックして値を追加することはできません数の要素。この問題を解決するにはどうすればよいですか。次のコードを試しましたが、入力に数字が表示されません。

var lastFocus;

$("#test").click(function(e) {
    // do whatever you want here
    e.preventDefault();
    e.stopPropagation();
    $("#results").append(e.html());
    if (lastFocus) {
        $("#results").append("setting focus back<br>");
        setTimeout(function() {lastFocus.focus()}, 1);
    }
    return(false);
});


$("textarea").blur(function() {
    lastFocus = this;
    $("#results").append("textarea lost focus<br>");
});

ありがとうございました。

4

3 に答える 3

1

次の関数を追加します。

$('.num-button').live( 'click', 'span', function() {
    $currObj.focus();
    $currObj.val( $currObj.val() + $(this).text().trim() );
});

また、次の変数をグローバル スコープに追加します。

$currObj = '';

ここに作業リンクがあります:http://jsfiddle.net/pN3eT/7/

編集

lastFocusコメントに基づいて、varとそれに続くコードは必要ありません。

更新されたフィドルはここにありますhttp://jsfiddle.net/pN3eT/28/

于 2013-04-24T12:00:51.320 に答える
1

これはうまくいくはずです:

var default_val = '';

$('input').focus(function() {
    lastFocus = $(this);
    if($(this).val() == $(this).data('default_val') || !$(this).data('default_val')) {
        $(this).data('default_val', $(this).val());
        $(this).val('');
    }
});

$('input').blur(function() {
    if ($(this).val() == '') $(this).val($(this).data('default_val'));
});

var lastFocus;

$('.num-button').click(function(e){
    e.preventDefault();
    e.stopPropagation();
    var text = $(e.target).text();
    if (!isNaN(parseInt(text))) {
        lastFocus.val(lastFocus.val() + text);
    }
});

ライブデモ

于 2013-04-24T11:56:06.343 に答える