2013-05-01 61 views
0

我有一个小表格,只有收音机可以检查或只有一个输入文本可以填写。有6种选择,但只有价值将被张贴。清除未集中的输入与jquery

我有这个小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检查它,但有没有一种方法?

+1

难道你不是'$('#angleform input [type =“text”]').val('');'当'text'输入获得焦点时? [小提琴](http://jsfiddle.net/Pdh6R/7/) – billyonecan 2013-05-01 07:58:23

+0

@billyonecan - Garh!那很简单!你会发布答案吗?谢谢。 – 2013-05-01 08:34:33

回答

2

你可以简单地清除所有的text输入时一个获得焦点:

$('#angleform input[type="text"]').val(''); 
0

两种方法将清除以前的输入状态,无论你的电台名称或ID简单地通过检查输入的类型属性。这样他们都只使用一个事件处理程序来清除彼此,而无需清除无线电数值!

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