Javascript 用于表单验证的Rails方式+;无提交按钮
目前我正在使用jQuery来处理这个问题,但它不是最优的——我可以经常模拟其中的bug(提交按钮要求我多次单击返回字段)Javascript 用于表单验证的Rails方式+;无提交按钮,javascript,jquery,ruby-on-rails,forms,Javascript,Jquery,Ruby On Rails,Forms,目前我正在使用jQuery来处理这个问题,但它不是最优的——我可以经常模拟其中的bug(提交按钮要求我多次单击返回字段) $(document).ready(function (){ validate(); $('#required_field1, #required_field2, #required_field3, #required_field4, #required_field5, #required_field6').change(validate); }); fun
$(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 5+Bootstrap3(这并不重要。)我会使用:
例如:
注意:这只是一个让您理解这个概念的示例(因为我没有您的HTML/Rails模板)
编辑
将此逻辑用于更改每个文本字段的事件
jQuery("#required_field1, #required_field2, ...").change(function() {
// Above code goes here
});
我将使用:
例如:
注意:这只是一个让您理解这个概念的示例(因为我没有您的HTML/Rails模板)
编辑
将此逻辑用于更改每个文本字段的事件
jQuery("#required_field1, #required_field2, ...").change(function() {
// Above code goes here
});
如果字段是表的列,那么为什么不使用rails的验证方式,比如:
validate:required\u field1,presence:true
…@Abhi这基本上就是我要问的-这会传递到submit按钮吗?或者你是在模型中讨论吗?是的,如果你提到的字段是DB列,那么你必须让ils处理验证@Abhi谢谢-这有助于我处理后端验证,但是有没有更好的Rails方法使Submit按钮在所有表单填写完毕之前不可点击?或者是我仅有的jQuery方法?我已经发布了一个答案,我觉得当字段数量很多时会更干净。顺便说一句,在你的代码中,你没有需要在函数内部调用validate,如:$('required_field1,'required_field2,…')。更改(function(){validate()})
如果字段是表的列,那么为什么不使用rails验证方式,比如:validate:required\u field1,presence:true
…@Abhi这基本上就是我要问的-这会被传递到提交按钮吗?或者你是在模型中讨论吗?是的,如果你提到的字段是DB列,那么你需要t让rails处理验证@Abhi谢谢-这有助于我处理后端验证,但是rails有没有更好的方法使提交按钮在所有表单填写完毕之前不可点击?或者是我唯一的jQuery方法?我已经发布了一个答案,我觉得当字段数量很多时,这个答案会更干净。顺便说一句,在你的cod中e、 您需要在函数内部调用validate,如:$('required_field1,'required_field2,…')。更改(function(){validate()});