2015-10-05 22 views
1

我有一个脚本,用于验证在onmouseout事件中输入的输入。首先,当用户将光标从第一个输入移开时,验证发生并显示错误消息。我想要对第二个输入执行相同的处理,也就是说,当光标从第二个输入移开时会显示一条错误消息。下面是我的代码:两个在其各自元素上执行相同动作的onmouseout事件

<script type="text/javascript"> 
    $('document').ready(function() { 
     $('#Make').on('mouseout', function() { 
      $("#carform").validate({ 
       rules: { 
        Make: { 
         required: true 
        } 
       }, 
       messages: { 
        Make: { 
         required: "Please enter a make" 
        } 
       }, 
       submitHandler: function (form) { 
        form.submit(); 
       } 
      }); 
      if ($("#carform").valid()) { 
       //Do some code 
      } 
     }); 
     $('#Model').on('mouseout', function() { 
      $("#carform").validate({ 
       rules: { 
        Model: { 
         required: true 
        } 
       }, 
       messages: { 
        Model: { 
         required: "Please enter a model" 
        } 
       }, 
       submitHandler: function (form) { 
        form.submit(); 
       } 
      }); 
      if ($("#carform").valid()) { 
       //Do some code 
      } 
     }); 
    }); 

</script> 

我的观点:

<div> 
    <form id="carform" method="post"> 
     <p> 
      @Html.LabelFor(l=>l.Make) 
      @Html.TextBoxFor(l => l.Make) 
     </p> 
     <p> 
      @Html.LabelFor(l=>l.Model) 
      @Html.TextBoxFor(l => l.Model) 
     </p> 
     <p> 
      <input id="createCar" type="submit" value="Submit"/> 
     </p> 
    </form> 

</div> 

当我移动光标从输入清除彩妆,错误信息能够被看见。但是当我对第二个输入模型做同样的处理时,没有看到错误信息。任何想法我做错了?

回答

1

你只需要初始化一次吧..不是每个input blur,你必须在jquery validation选项,验证上blur这是如下:

onfocusout

Type: Boolean or Function()

Validate elements (except checkboxes/radio buttons) on blur. If nothing is entered, all rules are skipped, except when the field was already marked as invalid.

Set to a Function to decide for yourself when to run validation.

A boolean true is not a valid value.

Example: Disables onblur validation.

$(".selector").validate({ 
    onfocusout: false //Do not use false instead use a callback function 
}); 

回调得到通过了两个参数:

element

类型:元素当前正在验证的元素,作为DOMElement。

event

类型:事件此事件的内容事件的事件对象。

所以,你可以利用回调函数,如下面的情况:

$('document').ready(function() { 
    $("#carform").validate({ 
      onfocusout: function(element) { 
       this.element(element); 
      }, 
      rules: { 
       Make: { 
         required: true 
       }, 
       Model: { 
        required: true //keep both the required here 
       } 
      }, 
      messages: { 
       Make: { 
         required: "Please enter a make" 
       }, 
       Model: { 
         required: "Please enter a model" //keep both the messages here 
       } 
      }, 
      submitHandler: function (form) { 
       if ($(form).valid()) { //check for valid form here 
        form.submit()//submit here 
       } 
      } 
    }); 

    $('#Make,#Model').on('blur', function() { 
     $("#carform").validate().element(this); 
    }); 
}); 
+0

我用你的代码替换了整个javascript,但现在我什么也没有得到。我的控制台上有这个错误:'Uncaught TypeError:i.settings [s] .call不是函数'。我需要添加其他东西吗? – tabby

+0

请检查更新后的答案..对不起,错误的解释.. @tabby –

+0

酷!正是我想要做的!非常感谢!投票答案! – tabby

0

简单,定义了同一类的两个输入要说类foo

和带班检查mouseout事件作为标识符如:

$('.foo').on('mouseout', function() { 
// your code here 
}); 
相关问题