Javascript 根据单选按钮的不同,防止Validation on FocusOut

Javascript 根据单选按钮的不同,防止Validation on FocusOut,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我无法验证下面的表单。 主要问题是我必须使用“onfocusout”函数来验证输入。 根据收音机选择,需要输入名称。 选择“value3”时,焦点设置为输入。 在输入时,如果用户试图更改单选按钮,则在更改单选值之前会触发onfocusout,在这种情况下,会显示错误,但不应显示错误 有什么建议吗 <form id="myform"> <input type="radio" name="radio" value="value1" /> value1 <

我无法验证下面的表单。
主要问题是我必须使用“onfocusout”函数来验证输入。
根据收音机选择,需要输入名称。
选择“value3”时,焦点设置为输入。
在输入时,如果用户试图更改单选按钮,则在更改单选值之前会触发onfocusout,在这种情况下,会显示错误,但不应显示错误 有什么建议吗

<form id="myform">    

  <input type="radio" name="radio" value="value1" /> value1
  <input type="radio" name="radio" value="value2" /> value2
  <input type="radio" name="radio" value="value3" /> value3

  <input type="text" name="name" />

  <input type="submit" />
</form>    

jsiddle:

尝试使用以下方法来防止正常事件处理程序


event.preventDefault()

调用
.valid()
方法太晚了。只要在每次
更改单选按钮时调用它,计时就会正确

$("input[name='radio']").on('change', function () {
    $("input[name='name']").valid();  // <- move it to here
    var value = $(this).val();
    if (value == "value3") {
        $("input[name='name']").focus();
    }
});
$(“输入[name='radio'])。在('change',函数(){

$(“输入[name='name'])。有效();//为什么需要使用focusout?@RubenSerrate,因为如果用户跳过了所需的输入,则输入必须标记为invalid为什么不在用户提交表单时检查输入并将其标记为invalid?那么,只有在提交表单时,您才会看到错误,如果用户希望稍后填写输入,该怎么办?
$("input[name='radio']").on('change', function () {
    $("input[name='name']").valid();  // <- move it to here
    var value = $(this).val();
    if (value == "value3") {
        $("input[name='name']").focus();
    }
});