我有这个小脚本,在启用“提交”按钮之前检查表单是否有效:
$('#RegisterForm input').on('keyup blur', function () {
if ($('#RegisterForm').valid())
{
EnableSubmitButton();
}
else
{
DisableSubmitButton();
}
});
这完美无缺,除了下拉菜单。如果它们是要完成的最后一项,则不会触发EnableSubmitButton()
方法。与其他输入不同,如果您取消选择它(或者,如果是文本框,则清除内容),则DisableSubmitButton();
事件不会触发。
但是,如果您尝试在未选择下拉列表的情况下提交表单,则会触发$("#RegisterForm")。validate()方法中的Required
错误。
<select
class="form-control input-sm required error"
id="CountryId"
name="CountryId"
aria-required="true"
aria-invalid="true">
<option value="">Country*</option>
<option value="1">United States</option>
....
</select>
答案 0 :(得分:0)
我改变了脚本:
$('#RegisterForm input').on('keyup blur', function () {
对此:
$('#RegisterForm input').on('keyup blur change', function () {
这仍然无效。但是,这确实有效:
// and for some reason, this dropdown isn't getting captured in the method above, so it gets it's own
$("#CountryId").change(function () {
if ($('#RegisterForm').valid()) {
EnableSubmitBUtton();
} else {
DisableSubmitButton();
}
});
看起来像一个愚蠢的黑客,但它完成了工作。打开其他答案。
答案 1 :(得分:0)
下拉列表应该在Form字段内,然后blur事件将起作用。