尝试进行添加和编辑的验证(唯一)。
我无法在验证jquery脚本中检索隐藏字段值。
以下是javascript:
// included:' jquery.validate.min', - 包含这些文件
validate_branch.js
var validator = $('#form_add_branch').validate({
errorElement: 'div',
rules: {
branch_name: {
required: true,
ValidateComma: true,
remote: BASE_URL_PATH+ "learner/branch/is_branch_exists?branch_id="+$('#branch_id').val()
}
},
messages: {
branch_name: {
required: languageArray['branch_name_required'],
ValidateComma: languageArray['branch_name_comma'],
remote: languageArray['branch_name_exists']
}
}
});
/* Comma validation (Comma not allowed)
*
* @param value String
*
* @return boolean
*
*/
jQuery.validator.addMethod("ValidateComma", function(value) {
var filter = /[,]+/;
if (filter.test(value))
{
return false;
} else
return true;
}, languageArray['branch_name_comma']);
这就是我们调用验证的方式:
<script>
$("#btn_add_branch").on("click", function() {
$('#form_add_branch').validate();
if ($('#form_add_branch').valid()) {
var branch_name = $('#branch_name').val();
var branch_id = $('#branch_id').val();
$.post(BASE_URL_PATH + "learner/branch/add_branch", {branch_name: branch_name, branch_id: branch_id}, function(data, status) {
if (data != "false") {
$("#succ_msg").show();
$("#err_msg").hide();
$('#branch_name').val("");
$('#branch_id').val("");
} else {
$("#succ_msg").hide();
$("#err_msg").show();
}
});
}
});
function edit_branch(branch_id) {
BRANCH_ID = branch_id;
$.post(BASE_URL_PATH + "learner/branch/get_branch_name", {branch_id: branch_id}, function(data, status) {
if (data) {
$('#branch_name').val(data);
$('#branch_id').val(branch_id);
}
});
}
</script>
注意:在远程$('#branch_id').val()
中,这是空白的,但在服务器端它是。
请以正确的方式指导我。感谢。
答案 0 :(得分:1)
您需要在validate
方法中添加 ignore
属性。默认情况下hidden inputs
未验证jquery.validate.js
,因此您需要使用
$.validator.setDefaults({
ignore: [] //do not ignore any input fields even though its hidden
});
上述方法为所有elements
设置了该行为,而不管您forms
validation
var validator = $('#form_add_branch').validate({
ignore: ":hidden:not('#branch_id')" //ignore all hidden fields except #branch_id
});
。现在,如果您想 ignore
只有一个字段,那么您可以按以下方式执行此操作:
<%= f.fields_for :answers do |builder| %>
Q: <%= builder.label builder.object.question %>
A: <%= builder.text_area :answer %>
<% end %>