我需要检测表单是否为空。我已经进行了客户端验证,带有必填字段而非强制性,当有一个或多个必填字段时,这是(这些)为空,post按钮启动客户端验证错误,这很好。当它们都不是强制性的时候我只需要禁用发布按钮,直到我插入一个值,在我写东西时启用发布按钮。但是,如果我删除这些值,我无法检测表单是否为空,无法重新禁用该按钮!
$('#form .my_field').each(function() {
$(this).data('oldVal', $(this).val());
$(this).bind("propertychange keyup input paste change blur", function(event) {
if ($(this).data('oldVal') != $(this).val()) {
$('#post_button').button({
disabled: false
});
}
});
});
有了这个绑定,我可以检测到我在一个随意的表格字段写的时候,但我没有线索如何找到每个字段是否干净。我尝试了很多道路,但它们让我走到了尽头。也许是一个10小时的编程问题:)我尝试了某种
if ($(this).val()=='')
,但是对于某些字段(例如数据贴图)不起作用(我可以选择太多选择---->:选项)
我想我要将相同的事件绑定到一个(如果为空设置一个布尔标志)并检查所有布尔标志以确定它们是否全部为真(或假)...任何提示?
答案 0 :(得分:1)
为什么不使用else if
?
jQuery的:
$('#form .my_field').each(function() {
$(this).data('oldVal', $(this).val());
$(this).bind("propertychange keyup input paste change blur", function(event) {
if ($(this).data('oldVal') != $(this).val()) {
$('#post_button').button({
disabled: false
});
}
else if ($(this).val() == $(this).data('oldVal')) { // Don't even bother checking the rest if this doesn't match
var unchanged = 0;
$('#form .my_field').each(function() {
if ($(this).val() == $(this).data('oldVal')) {
unchanged++;
}
});
if (unchanged == $('#form .my_field').length) {
$('#post_button').button({
disabled: true
});
}
}
});
});