2017-06-13 46 views
0

使用jQuery验证使用数据属性,我做的一个关于select有条件的验证和text场:文本字段(#specialization)必须填写,如果一个特定的选项(<option value="doctor">)从已选定选择字段(#job如何为条件验证

到目前为止好,这里是一个工作副本:https://jsfiddle.net/vzx9paxz/2/

现在,我不喜欢惹太多的JS代码,我想采取data-rule-required的优势属性。所以,我想直接在HTML代码计算表达式($('#job').val() === 'doctor'),从JavaScript将其取出:如果返回true,该#specialization栏目必须填写,否则它可以为空

事情是这样的:

<input type="text" data-rule-required="return ($('#job').val() === 'doctor')" class="form-control" id="specialization" name="specialization"> 

当然这个代码不工作:我试过其他表达式,如javascript:return ($('#job').val() === 'doctor'),但没有运气可言......

回答

1

如何:使用数据属性的条件验证

你不能。


data-rule-required="return ($('#job').val() === 'doctor')" 

即使你可以一个data属性的内部执行JavaScript,你不能,the jQuery Validate plugin cannot interpret it (see the JS errors in the console)。通常,它会在data-rule-required内寻找truefalse字符串...但它不能执行条件表达式。

换句话说,无论你把一个价值data-rule-required,jQuery的验证插件将它解释为一个字符串,如哽在喉比"true""false"的任何其他。

+0

谢谢,明白了! :-) – Ivan

0

数据属性倾斜触发事件。 更好地编写一个JavaScript函数,并通过单击,焦点,调整大小,mouseup ...事件来调用它。像:

<input class="user" name=""> 

<script> 
    $(".user").focus(function(){ 
if($(this).val()=="doctor"){ 
// do what ever 
    } 
    }); 
+0

你对数据属性是正确的。但是,OP不需要编写事件处理程序,因为条件可以放在插件的'.validate()'方法中。 – Sparky