目前我正在使用jQuery来处理这个问题,但它并不是最优的 - 我可以经常模拟其中的错误(提交按钮要求我多次点回字段。
$(document).ready(function (){
validate();
$('#required_field1, #required_field2, #required_field3, #required_field4, #required_field5, #required_field6').change(validate);
});
function validate(){
if ($('#required_field1').val().length > 0 &&
$('#required_field2').val().length > 0 &&
$('#required_field3').val().length > 0 &&
$('#required_field4').val().length > 0 &&
$('#required_field5').val().length > 0
){
$("input[type=submit]").prop("disabled", false);
}
else {
$("input[type=submit]").prop("disabled", true);
}
}
但它根本不适合Rails。虽然我理解数据绑定的概念并不友好,但我想知道在Rails中是否有更好的方法可以做到这一点?
目前没有它你可以提交一个空白页面,并立即收到错误,这比这更糟糕。
感谢任何反馈。
Rails 5 + Bootstrap3(这并不重要。)
答案 0 :(得分:0)
例如:
var params = jQuery("#form_id").serializeArray();
//This should give you form params like:
// [
// {name: "obj[required_field1]", value: ""},
// {name: "obj[required_field2]", value: ""},
// .
// .
// .
// ]
jQuery.each(params, function(i, v) {
if(v["value"].length > 0) {
jQuery("input[type=submit]").prop("disabled", false);
} else {
jQuery("input[type=submit]").prop("disabled", true);
}
});
注意:这只是让您理解概念的一个示例(因为我没有您的HTML / Rails模板)。
修改强>
使用此逻辑更改每个文本字段的事件。
jQuery("#required_field1, #required_field2, ...").change(function() {
// Above code goes here
});