0

我有一个小表格,只能检查收音机或只能填写一个输入文本。有 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

这两种方法都将清除任何先前的输入状态,无论您的收音机名称或 id 是什么,只需检查输入的 type 属性即可。这样他们都只使用一个事件处理程序来清除对方,而不清除无线电值!

方法一:.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/

方法二:.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 回答