如果未填写另一个字段或填写目标字段IS,我如何设置输入字段?
我有两个高度......英寸和英尺的字段。我想基于彼此制作所需的字段。我能够获得要求使用函数
"user[height][inches]":{
required: function(element) {
return (!$("input[name='user[height][feet]']").hasClass('valid'));
},
我为脚做了同样的事情并且效果很好。我需要的下一步是范围验证,但前提是该字段是必需的,或者如果不是必需的,但无论如何都要填写。我能够使用Depends
range: {
param: [1, 120],
depends: function(element) {
// if feet is not filled out then require inches range
if (!$("input[name='user[height][feet]']").hasClass('valid')){
return true;
// else if feet is filled out and inches is not blank or 0 then require range
} else if ( $("input[name='user[height][inches]']").val() != "" && $("input[name='user[height][inches]']").val() != "0" ) {
return true;
// else feet is filled out and inches is blank or 0 so do not require range
} else {
return false;
}
我似乎无法使用Number要求使用它。它仅适用于FIRST验证,但当用户再次尝试使用非数字时,它会接受它。
number: function(element){
// if feet is not filled out then require number input
if (!$("input[name='user[height][feet]']").hasClass('valid')){
return true;
// else if feet is filled out and inches is not blank
} else if ( $("input[name='user[height][inches]']").val() != "" ) {
return true;
// else feet is filled out and inches is blank so do not require
} else {
return false;
}
}
我也试过......
number: {
depends: function(event){
// if feet is not filled out then require number input
if (!$("input[name='user[height][feet]']").hasClass('valid')){
return true;
// else if feet is filled out and inches is not blank
} else if ( $("input[name='user[height][inches]']").val() != "" ) {
return true;
// else feet is filled out and inches is blank so do not require
} else {
return false;
}
}
}
我的字段表单是
<input type="number" name="user[height][inches]" placeholder="11"/>
<input type="number" name="user[height][feet]" placeholder="4"/>
我注意到如果我在验证期间调试当我调用$(“input [name ='user [height] [inches]']”)。val()它返回“”即使输入值是“字符串”,我相信这是因为它没有通过验证,但我也认为它破坏了我的逻辑。
另一个问题可能是,最初它正在检查脚字段是否为“有效”并且它返回false但是它似乎在最初为假之后,一旦填写了英寸字段然后设置为验证,然后在第二次尝试时破坏验证逻辑。
这是我的JFiddle,但我无法复制,因为它正确验证了一个数字,甚至没有包含验证要求...... http://jsfiddle.net/sza51q6s/1/
我可能要完全重新评估我的逻辑。只有在未填写其他字段或填写当前字段时,如何才能使目标字段成为必需字段?
答案 0 :(得分:2)
工作示例
http://codepen.io/anon/pen/MYaLXv
<form>
<input type="checkbox" id="check"/>
<label for="check">Make text input required</label><br/>
<input id="input" type="text"/>
<button type="submit">Try to Submit </button>
</form>
的jQuery
$("#check").on('change' function() {
if ( this.checked ) {
$("#input").attr('required', true);
} else {
$("#input").attr('required', false);
}
});
答案 1 :(得分:0)
我以前见过这个问题,问题是某些浏览器在输入非数字时如何处理type="number"
字段(value
最终为空,所以插件确实会看到条目和字段被视为空)。试试type="text"
,看看它是否有所作为。
否则,请确保您拥有最新版本的jQuery Validate(1.13),因为最近修复了与type="number"
问题相关的错误。
答案 2 :(得分:0)
'document': {
required: function(element){
return $("#document_title").val()!="";
}
}