0

ラジオのみをチェックできるか、入力テキストを1つだけ入力できる小さなフォームがあります。選択肢は 6 つありますが、値のみが掲載されます。

テキストがフォーカスされているときにラジオのチェックを外し、その逆の小さなjQueryがあります

$('#angleform input[type=text]').focus(function() {
    $('input[type=radio]').prop('checked', false);
});

$('#angleform input[type=radio]').click(function() {
    $('input[type=text]').val('');
});

http://jsfiddle.net/Pdh6R/4/を示すためにこのフィドルを作成しました

私が望むのは、値が入力され、別の入力にフォーカスした場合、フォーカスされていない入力の値をクリアする必要があることです。

入力IDで確認できることは知っていますが、ワンライナーの方法はありますか?

4

2 に答える 2

2

textフォーカスを取得したら、すべての入力を単純にクリアできます。

$('#angleform input[type="text"]').val('');
于 2013-05-01T08:57:11.323 に答える
0

どちらのアプローチでも、入力の type プロパティを確認するだけで、ラジオの名前や ID に関係なく、以前の入力状態がクリアされます。このように、両者は 1 つのイベント ハンドラーのみを使用して、無線の値をクリアすることなく、お互いをクリアします。

アプローチ 1: .focus()

var inputs = $("#angleform fieldset input");

// bind focus on all inputs
inputs.focus(function () {
    // loop through all
    for (var i = 0; i < inputs.length; i += 1) {
        var el = inputs.eq(i);

        // ignore focused element
        if (inputs[i] !== this) {
            // if radio type is the same => remove state
            // all other inputs can have empty value
            if (el.prop("type") === "radio") {
                el.prop("checked", false);
            } else {
                el.val("");
            }
        }
    }
});

デモ: http://jsfiddle.net/tive/uM3tk/

アプローチ 2: .blur()

var inputs = $("#angleform input"),
    myChoice;

// bind .blur() on inputs
inputs.blur(function () {
    myChoice = $(this);

    // if input type is radio
    if (myChoice.prop("type") === "radio") {
        myChoice.prop("checked", false);
    } else {
        myChoice.val("");
    }
});

デモ: http://jsfiddle.net/tive/LUP4b/

于 2013-05-01T11:31:20.337 に答える