我这里有启用和禁用提交按钮的脚本。我尝试使用每个功能但是没有工作。每个字段都有来自数据库的价值。如果其中一个字段为空,则不允许提交该进程。每个字段都有一个值,因为我用它来编辑窗口。任何帮助将不胜感激。感谢..
这是我的小提琴http://jsfiddle.net/cj6v8/
$(document).ready(function () {
var saveButton = $("#save");
var empty = true;
$('input[type="text"]').change(function () {
$('.inputs').each(function () {
if ($(this).val() != "") {
empty = false;
} else {
empty = true;
}
});
if (!empty) {
saveButton.prop("disabled", false);
} else {
saveButton.prop("disabled", true);
}
});
}); // END OF DOCUMENT READY
答案 0 :(得分:0)
你需要初始化empty
到false
并且只有在循环中找到空输入时才更改它。 http://jsfiddle.net/cj6v8/1/
答案 1 :(得分:0)
问题是第一个else
声明。
当$('.inputs').each(...
遍历您的字段时,empty
变量会为每个输入字段重新分配一个新值 。换句话说,就像你做的那样,只有最后一个字段才有意义。 (要测试它,请尝试这样做:将最后一个留空,并且无论您在前两个字段中放置什么,该按钮都将被禁用。)
相反,尝试在循环之前在empty
初始化false
(假设您的字段都填充了某些内容),然后,当您进行迭代时,只要遇到空字段,将empty
设为true
。
var empty = false;
$('.inputs').each(function() {
if($(this).val() == "")
empty = true;
});
如您所见,我删除了有问题的else
。
答案 2 :(得分:0)
如果您不想在至少一个字段为空时提交,则需要执行以下操作:
....
var empty = true;
$('input[type="text"]').change(function () {
empty = false;
$('.inputs').each(function () {
if ($(this).val() == "") {
empty = true;
break;
}
}
...
答案 3 :(得分:0)
每个都是异步的,http://jsfiddle.net/cj6v8/4/
$(document).ready(function() {
var saveButton = $("#save");
$('input[type="text"]').change(function() {
var empty = true;
var inputs = $('.inputs');
inputs.each(function(i) {
if ($(this).val().length == 0) {
console.log($(this).val());
empty = false;
}
if (i === inputs.length-1) saveButton.attr("disabled", !empty);
});
});
});// END OF DOCUMENT READY