我在这里找到了以下代码(Disable submit button unless original form data has changed)并且它有效,但对于我的生活,我无法弄清楚如何更改同一提交按钮的属性,文本和CSS。 / p>
我希望启用/禁用按钮时文本,背景和悬停背景不同,并且还要切换另一个可见/隐藏的DIV。
$('form')
.each(function(){
$(this).data('serialized', $(this).serialize())
})
.on('change input', function(){
$(this)
.find('input:submit, button:submit')
.prop('disabled', $(this).serialize() == $(this).data('serialized'))
;
})
.find('input:submit, button:submit')
.prop('disabled', true);
有人可以提供样品。我没有留下的头发了: - )
答案 0 :(得分:1)
您复制的答案并不是很好,因为form
没有change
或input
个事件。相反,Form
个元素会这样做。因此,将事件绑定到表单中的实际元素。除了您需要存储state
存储/当前数据是否彼此相等然后采取相应行动之外,其他一切看起来都不错。看看基于状态隐藏/显示div的演示。
$('form')
.each(function() {
$(this).data('serialized', $(this).serialize())
})
.on('change input', 'input, select, textarea', function(e) {
var $form = $(this).closest("form");
var state = $form.serialize() === $form.data('serialized');
$form.find('input:submit, button:submit').prop('disabled', state);
//Do stuff when button is DISABLED
if (state) {
$("#demo").css({'display': 'none'});
} else {
//Do stuff when button is enabled
$("#demo").css({'display': 'block'});
}
//OR use shorthand as below
//$("#demo").toggle(!state);
})
.find('input:submit, button:submit')
.prop('disabled', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input name="tb1" type="text" value="tbox" />
<input name="tb2" type="text" value="tbox22" />
<input type="submit" value="Submit" />
</form>
<div id="demo" style="margin-top: 20px; height: 100px; width: 200px; background: red; display: none;">Data isn't the same as before!</div>
剩下的工作可以通过CSS
使用:disabled
选择器(CSS3)或任何适当的选项来完成。
答案 1 :(得分:0)
change input
事件发生变化检测
您可以将代码更改为以下内容,以便使用此计算值:
$('form')
.each(function(){
$(this).data('serialized', $(this).serialize())
})
.on('change input', function(){
var changed = $(this).serialize() != $(this).data('serialized');
$(this).find('input:submit, button:submit').prop('disabled', !changed);
// do anything with your changed
})
.find('input:submit, button:submit')
.prop('disabled', true)
如果您想与其他div
合作,那就太好了。但是,对于样式,最好使用CSS :disabled
选择器:
例如,在CSS文件中:
[type='submit']:disabled {
color: #DDDDDD;
}
[type='submit']:disabled {
color: #CCCCCC;
}
答案 2 :(得分:0)
您可以使用css
更改按钮的悬停样式。 CSS有hover
状态来定位:
[type='submit']:disabled {
color: #ddd;
}
[type='submit']:disabled:hover {
background-color: grey;
color: black;
cursor: pointer;
border: none;
border-radius: 3px;
}
[type='submit']:disabled {
color: #ccc;
}
为了展示和隐藏,有许多技巧可以做到。我认为以下是最简单的技巧,而且更容易理解。
在您的HTML中添加
<div id="ru" class="hide">this is russia</div>
<div id="il" class="hide">this is israel</div>
<div id="us" class="hide">this is us</div>
<div id="in" class="hide">this is india</div>
在您的css中添加
.hide {
display: none;
background: red;;
}
更新您的javascript,如下所示:
$('form').bind('change keyup', function () {
.....
// get id of selected option
var id = $("#country-list").find(":selected").val();
$('.hide').hide(); // first hide all of the divs
$('#' + id).show(); // then only show the selected one
....
});
这是工作jsfiddle。如果这不是你想要的,请告诉我,我会更新答案。