如何在单个文本字段中添加多个规则的表单验证, 并根据规则采取不同的行动
例如,faq模块,具有预定义的问题,用户可以保存和/或发布他的答案。
我有一个表单,有1个textarea和2个按钮 1按钮提交表单以将输入的值作为草稿保存在数据库中 1按钮提交表单以保存并发布输入的值。
<form>
<input type="hidden" class="answerdraft"/>
<label class="answerlabel" for="answer">Answer:</label>
<textarea name="answer" class="answer" rows="8" cols="40"></textarea>
<input class="submitAnswer" type="submit" value="Save"/>
<input type="button" class="publishAnswer" value="Save & Publish"/>
</form>
在页面加载时,文本字段内显示现有的草稿值(如果有) 用户不应该保存,但可以发布 如果该字段为空,则用户无法保存或发布 如果该字段具有文本(并且与现有草案不同),则用户可以保存和/或发布。
我一直在使用jquery验证一段时间,但主要是对必填字段的基本验证和测试电子邮件等的正则表达式, 但我不清楚如何管理以上内容才能正确验证
我试过了,(下面的代码) 当前代码: 为了便于阅读:问题对象是表单所在的容器div。
$("textarea.answer", question).validate({
valid: function(val){
var answerdraft = $('input.answerdraft', question).val();
enable_button($('.submitAnswer', question));
enable_button($('.publishAnswer', question));
return val != "" && !val.match(/^\s+$/) && (val != answerdraft);
},
errorMessage: function(val){
var answerdraft = $('input.answerdraft', question).val();
if(val == answerdraft)
{
disable_button($('.submitAnswer', question));
enable_button($('.publishAnswer', question));
}
else
{
disable_button($('.submitAnswer', question));
disable_button($('.publishAnswer', question));
}
return _t.validationanswerrequired;
},
appendCompletionIcon: true
});
这并不完全是我想要的,它只使用1个规则,然后在错误方法中我测试设置启用righ tbuttons,但这意味着按钮被正确启用但文本字段有时会获得错误状态不需要显示错误而是显示中立状态。
我相信我需要重做我的逻辑,而不是在1中有效:或错误:函数,但使用规则选项,但不清楚我如何将启用/禁用功能绑定到带有规则对象的按钮。
任何指出我正确方向的人都非常欢迎。答案 0 :(得分:0)
我相信我想要复杂化, 我发现所有按钮的启用/禁用都不应该直接绑定到验证规则,因为即使规则失败,该字段中的数据在技术上也不是“无效”
所以我只使用jquery validate插件来检查该字段是否为空 如果空的按钮都应该被禁用,如果不是空的话我只是执行一个新的功能 这样可以检查上一个条目的逻辑。
因此,如果字段值为初始值(草稿),则只启用发布按钮 否则,两者都可以启用。
我知道这不是一个真正的技术问题得到解决,更像是一种解决方法,但它现在已经解决了,而不是我在验证时所做的更好。